使用XPATH计算子节点

时间:2014-06-10 15:59:32

标签: 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>

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

我尝试了这个链接(XPath to count the child nodes based on complex filter),但它没有帮助

我提出了这条道路

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

1 个答案:

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