2

優れた単純な XML 構造が与えられた場合、XmlSlurper() を使用すると、そこから値を非常に簡単に読み取ることができます。

def xml = "<html><head><title>groovy</title></head></html>"

def html = new XmlSlurper().parseText(xml)

println html.head.title

この単純なツリー ナビゲーションを汎用 (型ベースなど) XML で可能にする方法はありますか。理想的には、以下のコード スニペットでは、name属性で値を調べたいのですが、代わりに、このすべての検索を行う必要があります。

def genxml = """
<doc>
    <lst name = "head">
        <str name = "title">groovy</str>
        <str name = "keywords">java xml</str>
    </lst>
</doc>"""

def doc = new XmlSlurper().parseText(genxml)
println doc.lst.find { it.@name == "head" }.str.find { it.@name == "title" }

これを次のように歩く方法はありますか:

println doc.head.title
4

1 に答える 1

0

head と title は属性です。

スラーパーとパーサーにはいくつかの微妙な違いがあります: http://www.ibm.com/developerworks/java/library/j-pg05199/

あなたはこれを行うことができます:

println "${doc.lst.str[0]} ${doc.lst.str[0].@name}"
println doc.lst.str.each { 
    println "${it} ${it.@name}"
    }

しかし、出力を見てください:

groovy title
groovy title
java xml keywords
groovyjava xml
于 2009-06-27T01:16:47.690 に答える