使用XQuery / XPath 2.0在HTML页面中求和值

时间:2011-01-21 11:53:41

标签: java xpath xquery xmlbeans

我有一个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)对&lt; h6&gt;中的值求和。元素。我正在使用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());

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用XPath Sum函数:

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

打印:

17

答案 1 :(得分:-1)

我在这里猜测,但查询中的$this看起来有点奇怪。在标准XQuery中,名为$this的范围中没有变量。我假设您需要上下文项,因此您的查询将如下所示:

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

或更简单:

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

或只是:

sum(.//h6)

省略点意味着XPath从文档的根开始,而不是在上下文项中。