Écriture de XMLDocument dans un fichier avec un caractère de nouvelle ligne spécifique (c #)

J’ai un document XML que j’ai lu à partir d’un fichier. Le fichier est au format Unicode et comporte le caractère de nouvelle ligne ‘\ n’. Lorsque je réécris XMLDocument, il contient les caractères de nouvelle ligne ‘\ r \ n’.

Voici le code, assez simple:

XmlTextWriter writer = new XmlTextWriter(indexFile + ".tmp", System.Text.UnicodeEncoding.Unicode); writer.Formatting = Formatting.Indented; doc.WriteTo(writer); writer.Close(); 

XmlWriterSettings a une propriété, NewLineChars, mais je ne peux pas spécifier le paramètre settings sur ‘writer’, il est en lecture seule.

Je peux créer un XmlWriter avec une propriété XmlWriterSettings spécifiée, mais XmlWriter n’a pas de propriété de formatage, ce qui donne un fichier sans saut de ligne.

Donc, en bref, je dois écrire un fichier XML Unicode avec le caractère de nouvelle ligne ‘\ n’ et Formatting.Indented. Pensées?

Je pense que tu es proche. Vous devez créer le rédacteur à partir de l’object parameters:

( Extrait de la page MSDN de XmlWriterSettings )

 XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.OmitXmlDeclaration = true; settings.NewLineOnAtsortingbutes = true; writer = XmlWriter.Create(Console.Out, settings); writer.WriteStartElement("order"); writer.WriteAtsortingbuteSsortingng("orderID", "367A54"); writer.WriteAtsortingbuteSsortingng("date", "2001-05-03"); writer.WriteElementSsortingng("price", "19.95"); writer.WriteEndElement(); writer.Flush(); 

Utilisez XmlWriter.Create () pour créer le rédacteur et spécifier le format. Cela a bien fonctionné:

 using System; using System.Xml; class Program { static void Main(ssortingng[] args) { XmlWriterSettings settings = new XmlWriterSettings(); settings.NewLineChars = "\n"; settings.Indent = true; XmlWriter writer = XmlWriter.Create(@"c:\temp\test.xml", settings); XmlDocument doc = new XmlDocument(); doc.InnerXml = "value"; doc.WriteTo(writer); writer.Close(); } }