xpath如何按位置访问节点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xpath如何按位置访问节点相关的知识,希望对你有一定的参考价值。

我有这样的xml文件

<ce:MarkInfo>
<ce:boxpos>
<ce:boxnumber>box-00112</ce:boxnumber>
<ce:amclist>
<ce:amc>12</ce:amc>
<ce:amc>22</ce:amc>
</ce:amclist>
</ce:boxpos>
<ce:boxpos>
<ce:boxnumber>box-00113</ce:boxnumber>
<ce:amclist>
<ce:amc>32</ce:amc>
<ce:amc>42</ce:amc>
<ce:amc>52</ce:amc>
<ce:amc>62</ce:amc>
</ce:amclist>
</ce:boxpos>
</ce:MarkInfo>

和xpath表达式

xDoc.selectNodes("/ns:Documents/ns:Document/ns:WayBill_v3/wb:Content/wb:Position[1]/wb:InformF2/ce:MarkInfo//ce:amc").length = 6

/ns:Documents/ns:Document/ns:WayBill_v3/wb:Content/wb:Position[1]/wb:InformF2/ce:MarkInfo//ce:amc[1]

返回AMC值以12开头

/ns:Documents/ns:Document/ns:WayBill_v3/wb:Content/wb:Position[1]/wb:InformF2/ce:MarkInfo//ce:amc[3]

返回AMC值以52开头

/ns:Documents/ns:Document/ns:WayBill_v3/wb:Content/wb:Position[1]/wb:InformF2/ce:MarkInfo//ce:amc[5]

返回null

我如何通过它们的绝对位置来访问节点,而不是通过ce:amclist中的位置来访问节点?

答案

“我如何通过绝对位置访问节点,而不是通过ce:amclist中的位置?”

将整个XPath包装在括号中,并在外部添加位置谓词:

(/ns:Documents/.....//ce:amc)[5]

以上是关于xpath如何按位置访问节点的主要内容,如果未能解决你的问题,请参考以下文章

通过xpath相对节点位置查找元素

使用 xpath 访问具有命名空间的子节点

python--通过xpath相对节点位置查找元素(续)

xpath 选择按属性值列表排除的节点

xpath按元素和属性查找节点,其中包含具有特定id的子元素

XPath 查询未使用 VTDNav/AutoPilot 按文档顺序将结果作为节点序列返回