XDocument.Parse在没有要求时保留空格

时间:2010-11-11 00:44:24

标签: c# xml whitespace linq-to-xml

我正在尝试从字符串加载XDocument,该字符串包含文本节点中具有过多空格的XML元素。根据我对XDocument.Parse方法的MSDN的理解,它应该不保留空格。

为什么那么,在这个简单的例子中,空白仍然存在?

string xml = "<doc> <node>this  should  be  collapsed</node> </doc>";
XDocument doc = XDocument.Parse(xml);
Console.WriteLine(doc.Root.Element("node").Value);

Console.WriteLine调用的结果是每个单词之间有两个空格的短语。我希望每个之间只有一个空格。

1 个答案:

答案 0 :(得分:1)

“不保留空格”意味着在加载XDocument时,将忽略包含空格的任何文本节点。

您的xml字符串可以由以下树表示:

 doc
 |--#text - " "
 |--node
 |  |--#text - "this  should  be  collapsed"
 |--#text - " "

如果您检查doc.Root.Value的内容,您将看到字符串

"this  should  be  collapsed"

如果您在“保留空格”时加载字符串,

XDocument doc = XDocument.Parse(xml, LoadOptions.PreserveWhitespace);

再次检查doc.Root.Value的内容,您将看到字符串

" this  should  be  collapsed "