我在文档的根目录下有一个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说它是有效的).我可以不在XPathNavigator上使用XPath函数吗?我只是做错了吗?
(另外,只是好奇,我是在浪费我的时间在一个没有人使用的死胡同上,并冒着从现在开始无法弄清楚这是做什么的风险?)
试试这个:
XPathNavigator sumNode = nav.Evaluate(myXPath);
该XPathNavigator.Evaluate
方法定义为:
计算指定的XPath表达式并返回键入的结果.
而不是XPathNavigator.SelectSingleNode
设计为仅返回节点的方法.