我在文档的根部有一个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/