2

私はそのようなxmlファイルを持っています

<root>
<segmentNameA attributeName="10" />
<segmentNameB attributeName="50" />
</root>

これが私のコードです:

XPathDocument xPathDocument = new XPathDocument(analysisFileToProcess);
XPathNavigator  Navigator = xPathDocument.CreateNavigator();

すべての attributeName 属性 (10 + 50) の合計を取得したいと思います。

これが私がすることです

var sum /*want to obtain 60*/ = Navigator.Select(Navigator.Compile("sum(/root/*[self::segmentNameA or self::segmentNameB]/@attributeName)"));

「無効なトークンがあります」という表現が表示されます。

しかし、私がこれを行うとき

var nodes = Navigator.Select(Navigator.Compile("/root/*[self::segmentNameA or self::segmentNameB]"));

合計したい属性を含むすべてのノードを取得します。

そして、私がそれをするとき

var nodes = Navigator.Select(Navigator.Compile("/root/*[self::segmentNameA or self::segmentNameB]/@attributeName"));

属性のリストを取得します。これで sum 関数を使用できないのはなぜですか?

誰かが私が間違っていることを指摘してもらえますか?

4

1 に答える 1

1

これは、XPath 式がノード セットに評価される必要があるためです。代わりにメソッドを
使用してください:Evaluate

var sum = (double)Navigator.Evaluate("sum(/root/*[self::segmentNameA or self::segmentNameB]/@attributeName)");
于 2013-06-12T21:15:17.300 に答える