使用 XPATH 计算子节点

Em *_* Ae 7 xpath

我有以下 XML

<orderList>
    <orderInfo orderId="xyz" returnCode="Pending" />
    <orderInfo orderId="yzz" returnCode="Shipped">
        <orderDetail shipped-date="xxxx-xx-xx xx:xx:xx">
            <order>
               ....
            </order>
        </orderDetail>
    </orderInfo>
</orderList>
Run Code Online (Sandbox Code Playgroud)

我想计算每个 orderDetail 项目下的订单数量...

我试过这个链接(XPath 来计算基于复杂过滤器的子节点)但它没有帮助

我想出了这条路

count(//orderList/orderInfo/orderDetail[count(order)])

hel*_*cha 8

如果要计算节点中的所有 order元素orderList/orderInfo/orderDetail(忽略其当前上下文),则可以使用:

count(//orderList/orderInfo/orderDetail/order)
Run Code Online (Sandbox Code Playgroud)

如果你要计算的订单数量为特定的 orderDetail,那么你应该使用谓词来选择其中 orderDetail你想要的:

count(//orderList/orderInfo/orderDetail[@shipped-date="xxxx-xx-xx xx:xx:xx"]/order)
Run Code Online (Sandbox Code Playgroud)

除非您使用 XPath 2.0 或更高版本,否则您将无法使用单个表达式返回结果集合。但是您可以选择所有orderDetail元素 ( //orderList/orderInfo/orderDetail),遍历它们并计算当前上下文中的 order 元素,或者将谓词值设置为变量以选择特定的orderDetail.