Domanda

Ho un XMLDocument che ho letto in da file. Il file è Unicode, e ha il carattere di nuova riga '\ n'. Quando scrivo la parte posteriore XMLDocument fuori, ha i caratteri di nuova linea '\ r \ n'.

Ecco il codice, piuttosto semplice:

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

doc.WriteTo(writer);
writer.Close();

XmlWriterSettings ha una proprietà, NewLineChars, ma sono in grado di specificare le impostazioni dei parametri su 'scrittore', che è di sola lettura.

I può creare un XmlWriter con una proprietà XmlWriterSettings specificato, ma XmlWriter non avere una proprietà formattazione, risultando in un file senza interruzioni di linea a tutti.

Così, in breve, ho bisogno di scrivere un file XML con Unicode carattere '\ n' newline e Formatting.Indented. Pensieri?

È stato utile?

Soluzione

Credo sei vicino. È necessario creare lo scrittore dalle impostazioni oggetto:

(sollevato dalla XmlWriterSettings pagina MSDN )

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();

Altri suggerimenti

Usa XmlWriter.Create () per creare lo scrittore e specificare il formato. Questo ha funzionato bene:

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();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top