我在文档的根部有一个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上?我只是做错了吗?

(也很好奇,我是在把时间浪费在没人使用的死胡同方法上,冒着从现在开始一年后无法弄清楚这是怎么做的风险吗?)

最佳答案

尝试以下方法:

XPathNavigator sumNode = nav.Evaluate(myXPath);


XPathNavigator.Evaluate方法定义为:


评估指定的XPath表达式并返回输入的结果。


与仅用于返回节点的XPathNavigator.SelectSingleNode方法相反。

关于.net - 我可以在XPathNavigator中使用XPath函数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1375783/

10-09 19:38