如何使用XPath在XML中获取特定节点名称(使用Groovy)

时间:2018-06-13 19:49:39

标签: groovy

我有一个XML如下:

String xml = """  
    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope>
        <soapenv:Body>
            <processAsyncRequest></processAsyncRequest>
        </soapenv:Body>
    </soapenv:Envelope>  
"""  

使用Groovy,我想使用XPath(// :Body / [1] / name())

在“Body”中找到第一个节点名称
Output Should be : processAsyncRequest 

我使用XmlSlurper解析xml。但是无法弄清楚使用XPath获取节点名称的后续步骤

def rootNode = new XmlSlurper().parseText(xml)  

有没有简单的方法来实现这一目标?注意:我的xml结构每次都会改变。所以我想使用相对路径。

1 个答案:

答案 0 :(得分:1)

但那不是XPath。它是GPath

String xml = """<?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope xmlns:soapenv='...'>
        <soapenv:Body>
            <processAsyncRequest></processAsyncRequest>
        </soapenv:Body>
    </soapenv:Envelope>  
"""  
def rootNode = new XmlSlurper().parseText(xml)

println rootNode.Body.'*'[0].name()