2

groovy で XmlParser() を使用します。次のコードを参照してください。nameの値がtypeの場合、 answerの値を出力する必要があります。

   <root>
        <foo name = 'type' answer  = 'car'/>
        <foo name = 'color' answer = 'red'/>
        <foo name = 'size' answer = 'big'/>
    </root>

私はこのようなことをする必要があります:

def XML = new XmlParser().parseText(XMLstring)
println XML.root.foo.[where  @name = 'type'].@answer
4

1 に答える 1

12

複数の一致があることを期待しているのか、それとも 1 つだけであることを知っているのかはわかりません。以下はそれらをすべて見つけて、それらの答えを出力します。

source = '''
<root>
    <foo name = 'type' answer  = 'car'/>
    <foo name = 'color' answer = 'red'/>
    <foo name = 'size' answer = 'big'/>
</root>
'''
xml = new XmlParser().parseText(source)

results = xml.findAll { it.@name == 'type' }

results.each {
    println it.@answer
}

それが役立つことを願っています。

編集:

1つしかないことがわかっている場合は、次のようなことができます...

println xml.find { it.@name == 'type' }.@answer

さらに別のオプション(いくつかあります):

xml = new XmlParser().parseText(source)

xml.each { 
    if(it.@name == 'type') {
        println it.@answer
    }
}
于 2014-06-26T21:16:05.813 に答える