次の XML があるとします。
<list version="1.0">
<meta>...</meta>
<resources start="0" count="167">
<resource classname="Quote">
<field name="name">USD/KRW</field>
<field name="price">1024.400024</field>
<field name="symbol">KRW=X</field>
</resource>
...
</resources>
</list>
正しいものを見つけて<resource>
取得するためにprice
、次のことを行います。
def slurper = new XmlSlurper()
def result = slurper.parse(XML_URL)
def node = result.depthFirst().find { it.text() == "KRW=X" }
println node.parent().find { it['@name'] == "price" }.text()
ただし、結果は、ドキュメントと完全に一致しparent()
ない実装されていません: http://groovy.codehaus.org/gapi/groovy/util/slurpersupport/GPathResult.htmlfind(Closure)
node.parent().size()
上記の XML に従って 3 を返すと予想される場合、さらに奇妙な1 が返されます。
私の質問:
私のコードは正しいですか?なぜ機能しないのですか?
これは、期待される結果を達成するための最短の方法ですか?
なぜ
node.parent().size()
1 を返すのですか?node.parent().parent().size()
などについて も同様node.parent().parent().parent().size()
です...