我有以下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>
我想计算每个orderDetail项目下的订单数量......
我尝试了这个链接(XPath to count the child nodes based on complex filter),但它没有帮助
我提出了这条道路
count(//orderList/orderInfo/orderDetail[count(order)])
答案 0 :(得分:3)
如果要计算order
节点中所有 orderList/orderInfo/orderDetail
元素(忽略其当前上下文),则可以使用:
count(//orderList/orderInfo/orderDetail/order)
如果您想计算特定 orderDetail
的订单数,那么您应该使用谓词选择 orderDetail
你想:
count(//orderList/orderInfo/orderDetail[@shipped-date="xxxx-xx-xx xx:xx:xx"]/order)
除非您使用的是XPath 2.0或更高版本,否则您将无法使用单个表达式返回结果集合。但是,您可以选择所有orderDetail
元素(//orderList/orderInfo/orderDetail
),迭代它们并计算当前上下文中的顺序元素,或将谓词值设置为变量以选择特定的orderDetail
。