Groovy XmlSlurper:在XML结构中查找元素

Rob*_*uch 12 xml groovy xmlslurper

假设有以下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>
Run Code Online (Sandbox Code Playgroud)

使用Groovy XmlSlurper我需要执行以下操作:

Data找到包含元素中的值Field #1<DataFieldName>元素开始.如果找到则获取<DataFieldValue>属于同一级别的对应值.

soc*_*a23 16

如果DataFieldName在文件中是唯一的:

println new XmlSlurper()
    .parseText(xml)
    .DataFieldText.find {it.DataFieldName == "Field #1"}
    .DataFieldValue.text()
Run Code Online (Sandbox Code Playgroud)

如果不是,并且您想获得具有所有匹配的DataFieldValues的数组:

println new XmlSlurper()
    .parseText(xml)
    .DataFieldText.findAll {it.DataFieldName == "Field #1"}*.DataFieldValue*.text()
Run Code Online (Sandbox Code Playgroud)

  • 那不是`NodeChildren`的`List`吗?更好的可能是:`new XmlSlurper().parseText(xml).DataFieldText.findAll {it.DataFieldName.text()=='Field#1'}*.DataFieldValue*.text()` (2认同)