読者です 読者をやめる 読者になる 読者になる

ゲンゾウ用ポストイット

Java、Groovy、Linux関連の備忘録

サイトのhtmlをXmlSlurperで処理する

最近ではxhtmlでかかれたサイトが多くなったが、サイトのhtmlがxhtmlであることを前提にXmlSlurperで処理しようとすると時々固まってしまう。正しいxhtmlでかかれていない箇所があったりするからだ。
また、DTD定義を探しにいくが、見つからずにエラー、といったこともある。

そこで xhtmlを読み込む前に事前処理を行うことで、サイトのxhtmlを XmlSlurper で処理できる。

#!/usr/bin/env groovy
@Grapes(
    @Grab(group='net.sourceforge.htmlcleaner', module='htmlcleaner', version='2.2')
)
import org.htmlcleaner.*

def address = 'http://groovy.codehaus.org/'

def cleaner = new HtmlCleaner()
def node = cleaner.clean(address.toURL())

// htmlをxmlに変換
def props = cleaner.getProperties()
def serializer = new SimpleXmlSerializer(props)
def xml = serializer.getXmlAsString(node)

// DTDの妥当性検証を実施しない設定
def page = new XmlSlurper(false,false).parseText(xml)
...

ここから先は以下のサイトを参考に page 変数に対して好き勝手にごにょごにょしてあげればOK。
(僕はXmlSlurperの使い方になれず未だに以下のサイトを手放せない)

Groovy - Reading XML using Groovy's XmlSlurper

広告を非表示にする