在C#中选择带有XPath的空白节点

时间:2013-05-24 10:13:37

标签: c# .net xpath xpathnavigator

我有以下代码

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>

查询工作正常。但在这种情况下,节点的类型为SignificantWhitespace,而不是Whitespace

1 个答案:

答案 0 :(得分:4)

其中一个“哈哈”时刻......

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

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