我有一个 XML 文档,其中包含如下所示的空节点:
<metadata territory="USA"></metadata>
简单打开后,然后使用 XmlDocument 保存,这一行如下所示:
<metadata territory="USA">
</metadata>
当我将 PreserveWhitespace 设置为 true 时,它将整个 XML 转换为 1 行,因此这将不起作用。
这些 XML 文件需要尽可能保持当前的格式。我知道,从技术上讲,它们以何种方式编写并不重要,它们将以相同的方式阅读,但我仍然需要保持相同的格式。我想不出一种方法来将没有值的节点保持在 1 行。有办法做到这一点吗?
保持文档原始格式的唯一方法是,如果 XML 文件在 header 中包含“xml:space="preserve"”,但我要保留 header 原样。
我唯一想改变的是增加值。正如我所说,只需加载和保存文档即可添加此内容,因此如果您想测试,只需尝试...
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Temp\test.xml");
doc.Save(@"C:\Temp\test_02.xml");
最佳答案
刚刚进行了测试,通过设置 PreserveWhitespace
属性,可以同时使用 XDocument
和 XmlDocument
。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load("test.xml");
xmlDoc.Save("testOut.xml");
..
XDocument xdoc = XDocument.Load("test.xml", LoadOptions.PreserveWhitespace);
xdoc.Save(@"testOut.xml");
输入:
<foo>
<metadata territory="USA"></metadata>
<bar></bar>
<baz>
</baz>
</foo>
输出:
<foo>
<metadata territory="USA"></metadata>
<bar></bar>
<baz>
</baz>
</foo>
关于c# - 编辑 xml 文件并保留空格和制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372793/