用于按名称查找所有属性值的GPath表达式

时间:2014-06-01 01:59:07

标签: xpath groovy gpath

使用属性名称查找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
  }

1 个答案:

答案 0 :(得分:4)

def parsed = new XmlParser().parseText( xmltxt )
parsed.'**'*.attribute( 'category' ).findAll()

应该这样做。

您可以使用XmlSlurper解决方案:

def parsed = new XmlSlurper().parseText( xmltxt )
parsed.'**'*.attributes().findResults { it.category }