2

石鹸エンベロープ本体に特定のノードが含まれているかどうかを判断しようとしています。

私が扱っている封筒の例:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <Response>
            <Result>Failure</Result>
            <Error id="40020" value="">An Unkown Error Occured</Error>
        <Response>
    </soapenv:Body>
</soapenv:Envelope>

ノード「Response」が含まれているかどうかを確認したいので、結果として条件付き操作を実行できます。私は XPath に比較的慣れていないので、完全な式がどうあるべきかわかりません。

私が現在持っているXPath式は

[name(//soapenv:Body/*[1]) = 'Response']

name(//soapenv:Body/*[1]) が "Response" の値を返すことはわかっていますが、その結果を別の値と比較して true/false を返す方法がわかりません。

代替表現としては、このようなものでしょうか?

//soapenv:Body/*[contains(Name, "Response")]
4

1 に答える 1

1

これらを試してください:

//soapenv:Body/*[name()='Response']

または、Response が Body の単なる子よりも深い可能性がある場合 (そうではないはずです)

//soapenv:Body/descendant::*[name()='Response']
于 2013-04-22T20:25:29.657 に答える