1

以下の SOAP 応答があります。

nIdType="ACTIVE" を持つ Address と nId を選択する必要があります。

さらに多くの Address と nId が存在する可能性があり、最初に一致したものを選択する必要があります。

私はグルーヴィーなスクリプトを書きましたが、成功しませんでした。私は新しいので助けてください

すべてのアドレスに nId がある場合とない場合がある可能性があります

Address と nId の両方を更新する必要があるテスト プロパティがあります。

Groovy スクリプトを使用して実装する必要があります。

<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>
4

1 に答える 1

2

</SOAP-ENV:Envelope>これを行うことができます(XMLに終了タグを追加し、有効なXMLにするためにに変更</ns2:macAddress>する必要がありました)</ns2:Address>

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

しかし、あなたの質問からあなたが求めているものを正確に伝えるのは難しいです

于 2012-08-03T15:00:41.373 に答える