【问题标题】:Can generic XML by parsed as nicely as simple XML in Groovy?通用 XML 可以像 Groovy 中的简单 XML 一样被解析吗?
【发布时间】:2009-06-27 00:16:25
【问题描述】:

鉴于一个漂亮、简单的 XML 结构,XmlSlurper() 可以让我非常轻松地从中读取值。

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

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

println html.head.title

有没有一种方法可以使通用(基于类型等)XML 的这种简单的树形导航成为可能。理想情况下,在下面代码的 sn-p 中,我想通过它们的 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

【问题讨论】:

    标签: java xml groovy xmlslurper


    【解决方案1】:

    head 和 title 是属性。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2023-04-05
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      相关资源
      最近更新 更多