给定一个漂亮,简单的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
答案 0 :(得分:0)
头部和头衔是属性。
slurper和parser之间存在一些非常微妙的差异: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