正在读取条件XML节点Groovy



我有以下SOAP响应:

我需要选择地址和nIdType="ACTIVE"的nId。

可能会有更多的地址和nId,我需要选择第一个匹配的。

我写了很棒的脚本,但没有取得任何成功。请帮助我,因为我是新的

可能所有地址都有或没有nId

我有测试属性,我需要更新地址和nId

我需要通过groovy脚本实现wh

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ns2:GetD xmlns:ns2="http://xyxz/pqr" xmlns:ns3="http://pqp/ptr" xmlns:ns4="http://nhgg./ns">
            <ns2:du>
                <ns2:Address>UUUUUU</ns2:macAddress>
            </ns2:du>
            <ns2:du>
                <ns2:Address>XXXXXXX</ns2:macAddress>
            </ns2:du>
            <ns2:du>
                <ns2:Address>PQWWEEE</ns2:macAddress>
            <ns2:dP>
                <ns2:pN>1</ns2:pN>
                <ns2:sE>
                    <ns2:nId>08767727</ns2:nId>
                    <ns2:nIdType>ACTIVE</ns2:nIdType>
                <ns2:sE>
            </ns2:dP>
            </ns2:du>
            <ns2:du>
                <ns2:Address>TTTTTTTT</ns2:macAddress>
            </ns2:du>
        </ns2:GetD>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

您可以这样做(我必须向XML添加一个结束</SOAP-ENV:Envelope>标记,并将</ns2:macAddress>更改为</ns2:Address>以使其成为有效的XML)

def xml = '''<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
            |  <SOAP-ENV:Header/>
            |  <SOAP-ENV:Body>
            |    <ns2:GetD xmlns:ns2="http://xyxz/pqr" xmlns:ns3="http://pqp/ptr" xmlns:ns4="http://nhgg./ns">
            |      <ns2:du>
            |        <ns2:Address>UUUUUU</ns2:Address>
            |      </ns2:du>
            |      <ns2:du>
            |        <ns2:Address>XXXXXXX</ns2:Address>
            |      </ns2:du>
            |      <ns2:du>
            |        <ns2:Address>PQWWEEE</ns2:Address>
            |        <ns2:dP>
            |          <ns2:pN>1</ns2:pN>
            |          <ns2:sE>
            |            <ns2:nId>08767727</ns2:nId>
            |            <ns2:nIdType>ACTIVE</ns2:nIdType>
            |          </ns2:sE>
            |        </ns2:dP>
            |      </ns2:du>
            |      <ns2:du>
            |        <ns2:Address>TTTTTTTT</ns2:Address>
            |      </ns2:du>
            |    </ns2:GetD>
            |  </SOAP-ENV:Body>
            |</SOAP-ENV:Envelope>'''.stripMargin()
def a = new XmlSlurper().parseText( xml ).Body?.GetD?.du?.find { node ->
  node.dP?.sE?.nIdType.text() == 'ACTIVE'
}
println "First Active Address = ${a?.Address?.text()}"

打印:

First Active Address = PQWWEEE

但很难从你的问题中判断出你在追求

最新更新