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 作为引擎),我尝试了以下内容,这只是给了我一个空指针异常;

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 求和函数:

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 回答