2009-09-03 68 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

相關問題