Je veux être en mesure d'écrire du XML dans une chaîne avec la déclaration et avec un codage UTF-8. Cela semble vraiment difficile à accomplir.Force XDocument à écrire en chaîne avec l'encodage UTF-8
J'ai lu un peu et essayé quelques-unes des réponses populaires pour cela, mais ils ont tous des problèmes. Mon code actuel est correctement sorti en UTF-8 mais ne conserve pas le formatage original du document XDocument (c'est-à-dire indents/whitespace)!
Quelqu'un peut-il vous donner des conseils s'il vous plaît?
XDocument xml = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), xelementXML);
MemoryStream ms = new MemoryStream();
using (XmlWriter xw = new XmlTextWriter(ms, Encoding.UTF8))
{
xml.Save(xw);
xw.Flush();
StreamReader sr = new StreamReader(ms);
ms.Seek(0, SeekOrigin.Begin);
String xmlString = sr.ReadToEnd();
}
Le XML nécessite la mise en forme identique à la façon .ToString()
formaterait il-à-dire
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<node>blah</node>
</root>
Ce que je suis en train de voir est
<?xml version="1.0" encoding="utf-8" standalone="yes"?><root><node>blah</node></root>
Mise à jour Je réussi à obtenir ce travail en ajoutant XmlTextWriter
paramètres ... Il semble très maladroit si !
MemoryStream ms = new MemoryStream();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.ConformanceLevel = ConformanceLevel.Document;
settings.Indent = true;
using (XmlWriter xw = XmlTextWriter.Create(ms, settings))
{
xml.Save(xw);
xw.Flush();
StreamReader sr = new StreamReader(ms);
ms.Seek(0, SeekOrigin.Begin);
String blah = sr.ReadToEnd();
}
Qu'est-ce que 'formatage'? Vous n'avez rien dit sur le formatage! – AakashM
L'espace/formatage habituel que vous obtenez si vous juste à '.ToString()' sur un 'XDocument' ou' XElement' – Chris
S'il vous plaît donner un exemple de document d'entrée afin que nous puissions tester les réponses. –