Évitez le retour chariot lors de l'écriture InnerText dans des éléments XML à l'aide System.Xml.XmlWriter
Question
J'utilise XmlWriter pour sauver un XmlDocument en .Net. Cependant, tous les éléments qui ont InnerText sont écrits avec des caractères entourant retour chariot.
J'ai essayé d'utiliser XmlWriterSettings pour éviter l'écriture de ces personnages, mais pas encore la chance.
Ici, il est un morceau de code utilisé:
XmlDocument outXml = new XmlDocument();
outXml.AppendChild .......
XmlWriterSettings sets = new XmlWriterSettings();
sets.Encoding = encoding;
sets.Indent = true;
XmlWriter xwriter = XmlWriter.Create(file, sets);
outXml.Save(xwriter);
xwriter.Close();
La sortie XML est comme:
<String Id="msierrXmlFileFailedSave" Overridable="yes">
Fehler beim Speichern der Einstellungen-Datei.
</String>
devrait être comme sortie xml nécessaire:
<String Id="msierrXmlFileFailedSave" Overridable="yes">Fehler beim Speichern der Einstellungen-Datei.</String>
Y at-il un moyen d'éviter l'écriture de ces retours chariot à l'intérieur des éléments?
PD: J'ai vu question inverse sur ce problème, mais la solution ne pas appliquer à ce cas.
Merci d'avance.
Allan.c
La solution
Vous voulez mettre la XmlDocument.PreserveWhitespace propriété avant d'appeler Enregistrer. Une autre option consiste à utiliser des sections CDATA au lieu du texte intérieur où le contenu textuel des éléments doit être conservé exactement.
De la documentation:
Si PreserveWhitespace est vrai avant Charge ou LoadXml est appelé, l'espace blanc les noeuds sont préservés; Par ailleurs, si cette propriété est faux, significatif l'espace blanc est conservé, l'espace blanc n'est pas.
Si PreserveWhitespace est vrai avant Enregistrer est appelée, l'espace blanc dans la le document est conservé dans la sortie; Par ailleurs, si cette propriété est faux, auto-indente la sortie XmlDocument.