我有以下代码
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
答案 0 :(得分:4)
其中一个“哈哈”时刻......
XPathDocument有一个构造函数重载,它接受一个XmlSpace枚举值。 如果没有提供XmlSpace值或XmlSpace.Default,XPathDocument将忽略非重要的空白节点 为了能够选择非重要的空白节点,您需要传递XmlSpace.Preserve。
请参阅:http://timoch.com/blog/2013/05/xpathdocument-and-whitespaces/