2

我有以下代码

var textReader = new StringReader("<root>    </root>");
var settings = new XmlReaderSettings();
settings.IgnoreWhitespace = false;
var reader = XmlReader.Create(textReader, settings);
var doc = new XPathDocument(reader);
var nav = doc.CreateNavigator();
var ws = nav.SelectSingleNode("/root/text()");

注意我的根节点中的空格。

ws一片空白。这是为什么?

我可以找到查询结果中出现不需要的空白节点的示例,但我找不到相反的方法。

谢谢

编辑:如果我的 xml 是

<root xml:space="preserve">    </root>

查询工作正常。但在这种情况下,节点的类型是重要白空间,而不是白空间。

4

1 回答 1

4

那些“哈哈”的时刻之一......

XPathDocument 有一个构造函数重载,它采用 XmlSpace 枚举值。如果没有提供 XmlSpace 值或 XmlSpace.Default,XPathDocument 将忽略不重要的空白节点。为了能够选择不重要的空白节点,您需要传递 XmlSpace.Preserve。

请参阅:http ://timoch.com/blog/2013/05/xpathdocument-and-whitespaces/

于 2013-05-24T12:01:05.020 回答