Суммируйте значения в HTML-странице, используя XQuery / XPath 2.0 - PullRequest
1 голос
/ 21 января 2011

У меня есть 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) для суммирования значений в элементах

.Я использую xmlbeans (с саксонским в качестве движка), и я попробовал следующее, что просто дает мне исключение нулевого указателя: 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 ]

1 голос
/ 21 января 2011

Используйте функцию суммы XPath:

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

печать:

17
0 голосов
/ 21 января 2011

Я предполагаю, что $this в вашем запросе выглядит немного странно.В стандартном XQuery в области видимости нет переменной с именем $this.Я предполагаю, что вам нужен элемент контекста, поэтому ваш запрос будет выглядеть так:

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

или проще:

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

или просто:

sum(.//h6)

Пропускточка будет означать, что XPath начинается с корня документа, а не с элемента контекста.

...