GroovyでXMLを丸呑み
JavaをXMLと組み合わせて使用する初期の頃は、Javaプログラミング言語をXMLマークアップ言語で使用するよりも難しいように思われることがよくありました。自明ではなく、しばしば異なる方法で実装されたDOMおよびSAX APIに加えて、ライブラリの競合するバージョンが多すぎることなく、Xerces(および後にCrimson)の正しいバージョンを見つけることも一般的な問題でした。この環境が創作につながり、JDOMプロジェクトを次々と受け入れました。 JAXP(JDK 1.4)の標準Java XML解析APIの導入や、Java SE 6(および個別に利用可能な他のJava / XMLバインディングライブラリ)へのJAXBの組み込みなどのその後の開発により、JavaでのXMLの解析と操作がはるかに簡単になります。 。 Groovyは、Java / XML統合を容易にするためにこれらの進歩を続けています。このブログ投稿では、Groovyの使用方法を見ていきます。■XmlSlurperを使用すると、XMLの解析が非常に簡単になり、ほぼ透過的になります。
次の単純なXMLコードは、GroovyのXmlSlurperを示すために使用されます。この例のXMLファイルはと呼ばれRockAndRoll.xml
ます。
RockAndRoll.xml
次のコードスニペットは、XMLSlurperを使用してこのソースXMLに基づいて詳細を出力するGroovyコードを示しています。この場合のGroovyスクリプトはと呼ばれslurpXml.groovy
ます。
slurpXml.groovy
#!/usr/bin/env groovy // slurpXml.groovy // Demonstrates use of Groovy's XML slurping. // albums = new XmlSlurper().parse("RockAndRoll.xml") albums.Album.each { println "${[email protected]}'s album ${[email protected]} was released in ${[email protected]}." it.Song.each { println "\tFeaturing ${[email protected]} that peaked in the U.S. at ${[email protected]}" } }
上記のGroovyコードが示すように、XMLを解析し、その結果をより長い文字列の一部として出力するために必要なコードは数行だけです。new XmlSlurper().parse("RockAndRoll.xml")
ソースXMLを解析するのに必要なのは1行だけです。次に、これらの結果が割り当てられる変数(この場合albums
)は、使い慣れた構文を介してXMLコンテンツへのアクセスを提供します。
上記のGroovyコードを実行すると、その結果は次の画面スナップショットに示すようになります。
Groovyユーザーガイドには、GroovyのXmlSlurperを使用したXMLの読み取りに関するセクションがあります。このセクションでは、ハイフンを含むXMLタグ名(ハイフンを含む名前を二重引用符で囲む)や名前空間マッチングの詳細の処理など、GroovyのXmlSlurperの使用に関連する追加の問題について説明します。
結論
Groovyは実際にはJavaであるため、GroovyはJava用の多数のXML処理APIを利用できます。ただし、Groovyはこれを超えることができ、実際にそれを超えており、XML操作用のさらに使いやすいAPIを提供します。GroovyのXmlSlurperは、GroovyがXMLの読み取り/解析/スラーピングをこれまでになく簡単にする方法の一例です。
その他の参考資料
XmlSlurperのGroovyユーザーガイドセクションの他に、XmlSlurperの使用をカバーする他の多くのオンラインリソースがあります。それらのいくつかをここにリストします。
•GroovyのXmlSlurperを使用したXMLの読み取り
•Groovy:既存のXMLの処理(2009年3月6日)
•実質的にGroovy:XMLの構築、解析、およびスラーピング(2009年5月19日)
•XML以上にGroovyを欲しがるものはありません(2008年3月12日)
•XmlSlurperを使用したXMLの更新
•GroovyXMLSlurper
このストーリー「SlurpingXMLwith Groovy」は、もともとJavaWorldによって公開されました。