我可以在XPathNavigator中使用XPath函数吗?

时间:2009-09-03 20:32:40

标签: .net xml xpath

我在文档的根目录下有一个XPathNavigator。几个级别下来,我想要总结一组数值。我总是可以循环遍历节点并自己添加它们,但由于我知道XPath规范包含了sum函数,所以我决定尝试使用它。我遇到了错误。

System.Xml.XPath.XPathException - Expression must evaluate to a node-set.   

这是我的代码。

XPathDocument doc = new XPathDocument(new StringReader(myLiteralXML));
XPathNavigator nav = doc.CreateNavigator();
string myXPath = "sum(/root/level1/level2/elementsToAdd)";
XPathNavigator sumNode = nav.SelectSingleNode(myXPath);

我希望sumNode.Value能够给我(作为一个字符串)。但是当我尝试填充sumNode时,我得到了上面列出的例外。

我知道我的XPath是有效的(或者至少XMLSpy说它是有效的)。我可以不使用XPath函数 在XPathNavigator上?我只是做错了吗?

(另外,只是好奇,我是在浪费时间在一个没有人使用过的死胡同的方法上,而且冒着一年不能弄清楚这是怎么回事?)

1 个答案:

答案 0 :(得分:6)

请改为尝试:

XPathNavigator sumNode = nav.Evaluate(myXPath);

XPathNavigator.Evaluate方法定义为:

  

计算指定的XPath表达式并返回键入的结果。

,而不是仅用于返回节点的XPathNavigator.SelectSingleNode方法。