2010-04-23 4 views
7

J'ai un XMLDocument que j'ai lu dans le fichier. Le fichier est Unicode et a le caractère de nouvelle ligne '\ n'. Lorsque j'écris XMLDocument, il a les caractères de nouvelle ligne '\ r \ n'.Écriture de XMLDocument dans un fichier avec un caractère de nouvelle ligne spécifique (C#)

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 possède une propriété, NewLineChars, mais je suis incapable de spécifier le paramètre de paramètres sur « écrivain », 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 mise en forme, ce qui donne un fichier sans aucune ligne. Donc, en bref, j'ai besoin d'écrire un fichier Xml Unicode avec le caractère de nouvelle ligne '\ n' et le formatage. Indépendant. Pensées?

+0

voir aussi: http://stackoverflow.com/questions/3415294/how-can-i-generate-xml-with-cr-instead-of-crlf-in-xmltextwriter (qui renvoie à une réponse ici) –

Répondre

5

Je pense que vous êtes proche. Vous devez créer l'auteur à partir des paramètres objet:

(Tiré de la page XmlWriterSettings MSDN) pour créer l'écrivain et spécifier le format

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Indent = true; 
settings.OmitXmlDeclaration = true; 
settings.NewLineOnAttributes = true; 

writer = XmlWriter.Create(Console.Out, settings); 

writer.WriteStartElement("order"); 
writer.WriteAttributeString("orderID", "367A54"); 
writer.WriteAttributeString("date", "2001-05-03"); 
writer.WriteElementString("price", "19.95"); 
writer.WriteEndElement(); 

writer.Flush(); 
+0

Les deux réponses m'a clued dans ce qui me manquait: settings.Indent = true; – jaws

5

Utilisez XmlWriter.Create(). Cela a bien fonctionné:

using System; 
using System.Xml; 

class Program { 
    static void Main(string[] 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 = "<root><element>value</element></root>"; 
     doc.WriteTo(writer); 
     writer.Close(); 
    } 
} 
Questions connexes