XmlDocument不保存标签之间的空格

4

XML的一部分:

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

您可以看到文本:span标记之间有一个空格,其中包含text2和text3。当我调用XmlDocument.Load方法时,出现以下图片:

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

白空格被删除了,但我需要在这个地方保留这个空格。 设置属性"PreserveWhitespace = true"没有帮助。

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

6

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>
在 span 元素之间仍然保留空格。

1

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

XDocument.Load(xml, LoadOptions.PreserveWhitespace)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接