使用属性名称查找GPath表达式以获取属性值列表:
def xmltxt = """<reports>
<report category="weather">sunny</report>
<report category="sports">golf</report>
<report category="business">
<subreport category="deals">wallstreet</subreport>
</report>
<report>NA</report>
<report category="life">gossip</report>
</reports>"""
..在搜索所有category
属性时,无论文档中存在category
属性,我都想回复此属性:
[weather, sports, business, deals, life]
...但我的所有尝试都检索到的超过我想要的内容,看来它返回的节点没有category
个属性;我可以从列表中删除空元素,但我想知道为什么会这样。
[, weather, sports, business, deals, , life]
def names = xml.'**'.findAll{
it.@category
}.collect{
it.@category
}
答案 0 :(得分:4)
def parsed = new XmlParser().parseText( xmltxt )
parsed.'**'*.attribute( 'category' ).findAll()
应该这样做。
您可以使用XmlSlurper
解决方案:
def parsed = new XmlSlurper().parseText( xmltxt )
parsed.'**'*.attributes().findResults { it.category }