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 没有格式化属性,导致文件根本没有换行符。

所以,简而言之,我需要用换行符'\n'和Formatting.Indented 编写一个Unicode Xml 文件。想法?

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 回答