8

ファイルから読み込んだXMLDocumentがあります。ファイルはUnicodeであり、改行文字'\n'があります。XMLDocumentを書き戻すと、改行文字'\ r\n'が含まれます。

これが非常に単純なコードです。

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

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

XmlWriterSettingsにはプロパティNewLineCharsがありますが、'writer'で設定パラメーターを指定できません。読み取り専用です。

XmlWriterSettingsプロパティを指定してXmlWriterを作成できますが、XmlWriterにはformattingプロパティがないため、改行のないファイルになります。

したがって、要するに、改行文字'\n'とFormatting.Indentedを使用してUnicodeXmlファイルを作成する必要があります。考え?

4

2 に答える 2

6

XmlWriter.Create()を使用してライターを作成し、形式を指定します。これはうまくいきました:

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();
    }
}
于 2010-04-23T17:14:12.233 に答える
6

私はあなたが近くにいると思います。設定オブジェクトからライターを作成する必要があります。

XmlWriterSettings 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();
于 2010-04-23T17:07:40.723 に答える