使用XPath检查Soap Envelope是否包含子节点

时间:2013-04-22 20:22:37

标签: xpath

我正在尝试确定肥皂信封主体是否包含特定节点。

我正在使用的信封的一个例子:

<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")]

1 个答案:

答案 0 :(得分:1)

试试这些:

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

或者如果Response可能比Body的孩子更深(不应该是这样)

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