2009-09-03 36 views
1

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

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函数 ?我只是做错了吗?

(同样,只是好奇,我是不是浪费在一条死胡同的做法没人我的时间是一个使用,并冒着不能够从现在起一年这是什么东西做弄清楚?)

回答

6

试试这个:

XPathNavigator sumNode = nav.Evaluate(myXPath); 

XPathNavigator.Evaluate方法被定义为:

计算指定的XPath表达式并返回类型化的结果。

而不是XPathNavigator.SelectSingleNode方法,它被设计为只返回节点。

+0

从来不知道那里。谢谢。 – 2009-09-03 20:41:33

相关问题