Let's say there is the following XML structure:
<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>
Using Groovy's XmlSlurper
I need to do the following:
Beginning from Data
find that element which contains the value Field #1
in the <DataFieldName>
element. If found then get the value of the corresponding <DataFieldValue>
which belongs to the same level.
If DataFieldName is unique in a file:
println new XmlSlurper()
.parseText(xml)
.DataFieldText.find {it.DataFieldName == "Field #1"}
.DataFieldValue.text()
If it is not, and you want to get an array with all matching DataFieldValues:
println new XmlSlurper()
.parseText(xml)
.DataFieldText.findAll {it.DataFieldName == "Field #1"}*.DataFieldValue*.text()