gpathresult - traverse xml groovy
Groovy XmlSlurper: encuentra elementos en la estructura XML (2)
Digamos que existe la siguiente estructura XML:
<Data>
<DataFieldText>
<DataFieldName>Field #1</DataFieldName>
<DataFieldValue>1</DataFieldValue>
</DataFieldText>
<DataFieldText>
<DataFieldName>Field #2</DataFieldName>
<DataFieldValue>2</DataFieldValue>
</DataFieldText>
<DataFieldText>
<DataFieldName>Field #3</DataFieldName>
<DataFieldValue>3</DataFieldValue>
</DataFieldText>
</Data>
Usando XmlSlurper
de Groovy necesito hacer lo siguiente:
A partir de los Data
encuentre ese elemento que contiene el valor del Field #1
en el elemento <DataFieldName>
. Si se encuentra, entonces obtenga el valor del <DataFieldValue>
correspondiente que pertenece al mismo nivel.
Si DataFieldName es único en un archivo:
println new XmlSlurper()
.parseText(xml)
.DataFieldText.find {it.DataFieldName == "Field #1"}
.DataFieldValue.text()
Si no es así, y desea obtener una matriz con todos los DataFieldValues ​​coincidentes:
println new XmlSlurper()
.parseText(xml)
.DataFieldText.findAll {it.DataFieldName == "Field #1"}*.DataFieldValue*.text()
def xml = """<Data>
<DataFieldText>
<DataFieldName>Field #1</DataFieldName>
<DataFieldValue>1</DataFieldValue>
</DataFieldText>
<DataFieldText>
<DataFieldName>Field #2</DataFieldName>
<DataFieldValue>2</DataFieldValue>
</DataFieldText>
<DataFieldText>
<DataFieldName>Field #3</DataFieldName>
<DataFieldValue>3</DataFieldValue>
</DataFieldText>
</Data>"""
def payload = new XmlSlurper().parseText(xml)
def node = payload.''**''.find() { myNode -> myNode.DataFieldName.text() == ''Field #1'' }
value = node.DataFieldValue?.text()
println "${value}/n"