1

次のような HTML ページがあります。

<html>
  <head><title>Hello</title></head>
  <body>
    <div id="foo">
      <h6>9</h6>
      <h6>3</h6>
      <h6>5</h6>
    </div>
  </body>
</html>

XQuery (または xpath 2.0) を使用して <h6> 要素の値を合計したいと考えています。私はxmlbeans(エンジンとしてsaxonを使用)を使用していますが、次のことを試しましたが、nullポインター例外が発生しました。

XmlObject xml = XmlObject.Factory.parse(xmlFile);
XmlCursor htmlCursor = xml.newCursor();
XmlCursor result = htmlCursor.execQuery("sum(for $val in $this//h6 return number($val))");

System.out.println(result.getObject());

何か案は?

4

2 に答える 2

1

XPath Sum 関数を使用します。

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);
XPath path = XPathFactory.newInstance().newXPath();
System.out.println(path.evaluate("sum(//h6)", doc));

プリント:

17
于 2011-01-21T12:05:12.143 に答える
-1

私はここで推測していますが、$thisあなたのクエリは少し奇妙に見えます。標準の XQuery では、スコープ内に という変数はありません$this。コンテキスト項目が必要だと仮定すると、クエリは次のようになります。

sum(for $val in .//h6 return number($val))

またはもっと簡単に:

sum(.//h6/number(.))

あるいは単に:

sum(.//h6)

ドットを省略すると、XPath がコンテキスト アイテムではなく、ドキュメントのルートから始まることを意味します。

于 2011-01-21T12:17:24.673 に答える