【问题标题】:XmlWriterSettings, XmlTextWriter, XmlWriter not formatting output?! No new lines, no indentationXmlWriterSettings、XmlTextWriter、XmlWriter 不格式化输出?!没有新行,没有缩进
【发布时间】:2011-09-26 00:40:47
【问题描述】:

在 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);
}

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(outXmlFileName, settings))
{
    doc.Save(writer);
}

从文档http://msdn.microsoft.com/en-us/library/kkz7cs0d.aspx 中不清楚的是,我是否应该在 .Net 2 之上使用 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?!

【问题讨论】:

  • 在 .NET 2.0 及更高版本中,您应该使用XmlWriter.Create 而不是new XmlTextWriter()

标签: c# .net xml xmldocument xmlwriter


【解决方案1】:

我通过将 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);
            }

【讨论】:

    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多