1

HTML サイトから 1 つの特定の「div」タグ (「id」で識別) が必要です。ページを解析するには、cyberneko を使用しています。

    def doc = new XmlParser( new org.cyberneko.html.parsers.SAXParser() ).parse(htmlFile)
    divTag = doc.depthFirst().DIV.find{ it['@id'] == tagId  }

これまでのところ問題はありませんが、最後に XML は必要ありませんが、「div」タグ全体の元のコンテンツは必要です。残念ながら、私はこれを行う方法を理解できません...

4

2 に答える 2

1

編集: 最初のコメントに応答します。

これは機能します:

def html = """
  <body>
        <div id="breadcrumbs">
            <b>
            crumb1
            </b>
        </div>
</body>
"""

def doc = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parseText(html)
divTag = doc.BODY.DIV.find { it.@id == 'breadcrumbs'  }
println "" << new groovy.xml.StreamingMarkupBuilder().bind {xml -> xml.mkp.yield divTag}

元のマークアップが正しいかどうかに関係なく、cyberneko は整形式の HTML ドキュメントを返すようです。つまり、doc のルートは HTML 要素になり、HEAD 要素もあります。きちんとした。

于 2009-12-29T15:52:08.160 に答える
0

これは、ノアの答えに基づく簡単なテストです。残念ながら、(まだ)動作しません:(

    def html = """
      <body>
            <div id="breadcrumbs">
                <b>
                crumb1
                </b>
            </div>
    </body>
    """

    def doc = new XmlSlurper( new org.cyberneko.html.parsers.SAXParser() ).parseText(html)
    println "document: $doc"
    def htmlTag = doc.DIV.find {
        println "-> $it"
        it['@id'] == "breadcrumbs"
    }
    println htmlTag
    assert htmlTag
于 2009-12-30T13:18:22.747 に答える