【问题标题】:Using XPath to Check if Soap Envelope Contains Child Node使用 XPath 检查 Soap 信封是否包含子节点
【发布时间】:2013-04-23 04:25:29
【问题描述】:

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

我正在使用的信封示例:

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

我想检查是否包含节点“响应”,因此我可以对其执行条件操作。我对 XPath 比较陌生,所以我不确定完整的表达式应该是什么。

我目前拥有的 XPath 表达式是

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

我知道 name(//soapenv:Body/*[1]) 将返回“Response”的值,我只是不知道如何将该结果与另一个值进行比较并返回 true/false。

也许像这样作为替代表达?

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

【问题讨论】:

    标签: xpath


    【解决方案1】:

    试试这些:

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

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

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

    【讨论】:

    • 完美!这正是我需要的。这两个例子中的第一个有效——我不应该让 Response 节点比第一个孩子更深。
    • 正在处理它,您最初在 10 分钟阈值内发布,我不得不等待标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 2011-07-24
    • 1970-01-01
    • 2021-06-09
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多