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

Joh*_*ant 1 .net xml xpath

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

System.Xml.XPath.XPathException - Expression must evaluate to a node-set.   
Run Code Online (Sandbox Code Playgroud)

这是我的代码.

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

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

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

(另外,只是好奇,我是在浪费我的时间在一个没有人使用的死胡同上,并冒着从现在开始无法弄清楚这是做什么的风险?)

And*_*are 6

试试这个:

XPathNavigator sumNode = nav.Evaluate(myXPath);
Run Code Online (Sandbox Code Playgroud)

XPathNavigator.Evaluate方法定义为:

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

而不是XPathNavigator.SelectSingleNode设计为仅返回节点的方法.