我有以下 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)])
如果要计算节点中的所有 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
.
归档时间: |
|
查看次数: |
19980 次 |
最近记录: |