GPath, чтобы найти, содержит ли заголовок таблицы совпадающую строку
Я анализирую HTML-файл в правильно сформированный XML-документ, используя анализатор NekoHTML. Тем не менее, я не могу понять GPath, чтобы определить таблицу со строкой "Настройки".
def parser = new org.cyberneko.html.parsers.SAXParser()
parser.setFeature('http://xml.org/sax/features/namespaces', false)
def html =
'''
<html>
<title>Hiya!</title>
</html>
<body>
<table>
<tr>
<th colspan='3'>Settings</th>
<td>First cell r1</td>
<td>Second cell r1</td>
</tr>
</table>
<table>
<tr>
<th colspan='3'>Other Settings</th>
<td>First cell r2</td>
<td>Second cell r2</td>
</tr>
</table>
'''
def slurper = new XmlSlurper(parser)
def page = slurper.parseText(html)
В этом примере должна быть выбрана первая таблица, чтобы я мог перебирать другие значения в ней. Может кто-нибудь помочь мне с этим GPath, пожалуйста?
РЕДАКТИРОВАТЬ: боковой вопрос - почему
println page.HTML.HEAD.TITLE
вывести пустую строку, разве она не должна возвращать заголовок?
1 ответ
Решение
Чтобы получить таблицу с "Настройки" в заголовке, вы должны сделать:
def settingsTableNode = page.BODY.TABLE.find { table -> table.TBODY.TR.TH.text() == 'Settings' }
page
указывает на корень документа, поэтому вам не нужноHTML
, Все, что вам нужно сделать, это:println page.HEAD.TITLE