GroovyでXMLをずるっと読み込む | サラリーマンP(プログラマーというよりPM) ぽんきち日記

サラリーマンP(プログラマーというよりPM) ぽんきち日記

サラリーマンP(もうプログラマーは業務ではほぼしてなくてPM業務ばっか)の備忘録的なものです

GroovyではXMLの読み込みにXmlSlurperというクラスを使用することによって、
文字通りずるずると読み込むことが出来ます。
Groovyにはもう一つXmlParserというものがありますが、読み込みにはXmlSlurperのほうが適しています。
以下にコードを紹介します。


import groovy.xml.MarkupBuilder

def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
xml.example() {
        person(name: 'hoge', type: 'hage'){
                city('Tokyo')
                remarks('特に無し')
        }
        person(name: 'moge', type: 'debu', foo: 'bar'){
                city('Saitama')
                remarks('だ埼玉って言わないで')
        }
}
def doc = new XmlSlurper().parseText(writer.toString())
println "city=${doc.person.find { it.@type == 'debu' }.city}"

出力結果:

city=Saitama



先日のものに処理を追加したものになります。
XMLの要素の特定はGPathと呼ばれるXMLPathに似ている形式で指定します。
この機能はGroovyの得意とするDSLで定義されサンプルでも提示したように
非常に分りやすい定義で希望の要素を抽出することが出来ます。
この機能もGroovyがツールに向いている理由の一つかと思います。
またDSL(Domain Specific Language)を自分で定義することも出来ますので
自分のやりたいことに特化したものを定義することも出来ます。
何れそのやり方を紹介したいと思います。

プログラミングGROOVY/関谷 和愛

¥3,360
Amazon.co.jp