【问题标题】:XmlDocument don't save white spaces between tagsXmlDocument 不保存标签之间的空格
【发布时间】:2011-02-07 19:38:29
【问题描述】:

部分 XML:

<text:p>text1 <text:span>text2</text:span> <text:span>text3</text:span>text4</text:p>

您可以在 text2 和 text3 的 text:span 标签之间看到一个空格。当我调用 XmlDocument.Load 方法时,我有这张图片:

<text:p>text1 <text:span>text2</text:span><text:span>text3</text:span>text4</text:p>

空白已被删除,但我需要这个空间。 设置属性“PreserveWhitespace = true”没有帮助

【问题讨论】:

  • 除了可读性之外,为什么标签之间需要空格?
  • “当我调用 XmlDocument.Load 方法时,我有这张图片”是什么意思?调用XmlDocument.Load 将xml 从源加载到XmlDocument 类中,以便您可以使用XmlDocument api 来操作它。您如何将XmlDocument 转回字符串以将其发布在上面?
  • 我可以在 XmlDocument.InnerText 中看到加载结果。我看到标签之间没有空格。
  • Matt Ball,因为 text:p 和 text:span 中的文本标记它是一个字符串的一部分(text:span 为这个字符串的某些部分设置了不同的样式),我需要在之后获取这个字符串加载。这个空白只是两个单词之间的空格。

标签: .net xml xmldocument


【解决方案1】:

PreserveWhitespace 适合我。我的示例代码是

    string xml = "<root><p>text1 <span>text2</span> <span>text3</span>text4</p></root>";
    XmlDocument doc = new XmlDocument();
    doc.PreserveWhitespace = true;
    doc.LoadXml(xml);

    Console.Write(doc.InnerXml);

这会打印出来

<root><p>text1 <span>text2</span> <span>text3</span>text4</p></root>

跨度元素之间的空间仍然存在。

【讨论】:

    【解决方案2】:

    对于那些使用 XDocument 而不是 XmlDocument 的人:

    XDocument.Load(xml, LoadOptions.PreserveWhitespace)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多