c# - 编辑 xml 文件并保留空格和制表符

标签 c# xml

我有一个 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 属性,可以同时使用 XDocumentXmlDocument

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/

相关文章:

java - 在 Android 上使用 "Simple"XML 序列化从 res/raw 加载数据

c# - 创建 XML 文件时不能将非空白字符添加到内容中

c# - 我可以在 Entity Framework 的 Where 方法中使用自定义委托(delegate)方法吗?

c# - C# 中的正则表达式,负向后视中的表达式

c# - 如何循环遍历 C# 中的 var 对象集合?

java - JAXB 使用不同标签解码 XML 元素

c# - 如何将数据插入到 asp.net 中现有的 xml 文件中?

c# - 如何从字符串 [] 数组中获取名称与给定数字的比较

c# - 带有数字或特殊字符的密码复杂性正则表达式

java - 如何为不同的标签声明几个具有相同名称的样式属性?