我有一个XML文档,其中包含如下所示的空节点:
<metadata territory="USA"></metadata>
Run Code Online (Sandbox Code Playgroud)
只需打开,然后使用XmlDocument保存,这一行看起来像:
<metadata territory="USA">
</metadata>
Run Code Online (Sandbox Code Playgroud)
当我将PreserveWhitespace设置为true时,它将整个XML转换为1行,因此这不起作用.
这些XML文件需要尽可能保持当前格式.我知道,从技术上讲,它们的编写方式并不重要,它们将以相同的方式读取,但我仍需要保持相同的格式.我无法找到一种方法来保持节点没有值为1行.有没有办法做到这一点?
将文档保持原始格式的唯一方法是,如果XML文件在标题中包含'xml:space ="preserve"',但我将按原样保留标题.
我唯一想改变的是添加值.正如我所说,只需加载和保存文档就可以添加,所以如果你想测试一下,试试......
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Temp\test.xml");
doc.Save(@"C:\Temp\test_02.xml");
Run Code Online (Sandbox Code Playgroud)
刚做了测试,这可以使用两者XDocument并XmlDocument通过设置PreserveWhitespace属性.
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");
Run Code Online (Sandbox Code Playgroud)
输入:
<foo>
<metadata territory="USA"></metadata>
<bar></bar>
<baz>
</baz>
</foo>
Run Code Online (Sandbox Code Playgroud)
输出:
<foo>
<metadata territory="USA"></metadata>
<bar></bar>
<baz>
</baz>
</foo>
Run Code Online (Sandbox Code Playgroud)