Подтвердить что ты не робот

Как найти все элементы XML по имени тега в Groovy?

Как я могу найти все элементы в XML по имени своего тега в Groovy (GPath)?

Мне нужно найти все элементы car в этом документе:

<records>
  <first>
    <car>
      <id>378932</id>
    </car>
  </first>
  <second>
    <foo>
      <car>
       <name>audi</name>
      </car>
    </foo>
  </second>
</records>

Вот что я пробовал и терпел неудачу:

def xml = new XmlSlurper().parse(file)
assert xml.car.size() == 2
4b9b3361

Ответ 1

Вот как это работает:

def xml = new XmlSlurper().parse(file)
def cars = xml.depthFirst().findAll { it.name() == 'car' }
assert cars.size() == 2

Ответ 2

Вы также можете сделать:

def xml = new XmlSlurper().parse(file)
def cars = xml.'**'.findAll { it.name() == 'car' }

Ответ 3

Используйте XMLSlurper

def records = new XmlSlurper().parseText(file)
reco​rds.depthFirst()​.findAll { !it.childNodes() && it.car} ​

/*Otherwise this returns the values for parent nodes as well*/