Évitez le retour chariot lors de l'écriture InnerText dans des éléments XML à l'aide System.Xml.XmlWriter

StackOverflow https://stackoverflow.com/questions/3402659

  •  25-09-2019
  •  | 
  •  

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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top