GPath, чтобы найти, содержит ли заголовок таблицы совпадающую строку - PullRequest
1 голос
/ 13 февраля 2012

Я анализирую 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 Ответ

1 голос
/ 13 февраля 2012
  1. Чтобы получить таблицу с «Настройки» в заголовке, вы должны уметь:

    def settingsTableNode = page.BODY.TABLE.find { table ->
      table.TBODY.TR.TH.text() == 'Settings'
    }
    
  2. page указывает на корень документа, поэтому вам не нужно HTML. Все, что вам нужно сделать, это:

    println page.HEAD.TITLE
    
...