C# XmlWriterSettings,XmlTextWriter,XmlWriter未格式化输出?!没有新行,没有缩进

C# XmlWriterSettings,XmlTextWriter,XmlWriter未格式化输出?!没有新行,没有缩进,c#,.net,xml,xmldocument,xmlwriter,C#,.net,Xml,Xmldocument,Xmlwriter,在VS2008中使用.Net 3.5 SP1,我有一个XmlDocument,并尝试将其写入文件: using (XmlTextWriter tw = new XmlTextWriter(outXmlFileName, System.Text.Encoding.UTF8)) { tw.Formatting = Formatting.Indented; tw.Indentation = 3; tw.IndentChar = ' '; tw.QuoteChar = '

在VS2008中使用.Net 3.5 SP1,我有一个XmlDocument,并尝试将其写入文件:

using (XmlTextWriter tw = new XmlTextWriter(outXmlFileName, System.Text.Encoding.UTF8))
{
    tw.Formatting = Formatting.Indented;
    tw.Indentation = 3;
    tw.IndentChar = ' ';
    tw.QuoteChar = '\'';
    doc.Save(tw);
}

文档中不清楚的是,我是否应该在.NET2上使用XmlWriter.Create(),无论如何,这两种方法都不能格式化输出!我只得到XmlDocument实例中的内容:

<?xml version='1.0' encoding='utf-8'?>
<root>
<node1  />
<node2 value='Data' />
<node3 value='ID' /><node4><item>
<from value='1 Jan 1870' />
<id value='PF' />
<to value='1 Jan 1940' /></item></node4>
</root>


如何在从.Net写入XML文件之前整理XML

我将XML加载到第二个中间XmlDocument实例中,这样它就忘记了原来的空白:

            XmlWriterSettings settings = new XmlWriterSettings(); // http://msdn.microsoft.com/en-us/library/kkz7cs0d(VS.85).aspx
            settings.Indent = true;

            XmlDocument doc2 = new XmlDocument();
            doc2.LoadXml(doc.OuterXml);

            using (XmlWriter writer = XmlWriter.Create(outXmlFileName, settings))
            {
                doc2.Save(writer);
            }

在.NET 2.0及更高版本中,您应该使用
XmlWriter.Create
而不是
new XmlTextWriter()
            XmlWriterSettings settings = new XmlWriterSettings(); // http://msdn.microsoft.com/en-us/library/kkz7cs0d(VS.85).aspx
            settings.Indent = true;

            XmlDocument doc2 = new XmlDocument();
            doc2.LoadXml(doc.OuterXml);

            using (XmlWriter writer = XmlWriter.Create(outXmlFileName, settings))
            {
                doc2.Save(writer);
            }