仅搜索孩子和细节孙子

时间:2014-03-24 13:50:50

标签: xml xpath

我正在寻找一个带有xapth的表达式来传递两个级别:子节点和"细节孙子节点" :

例如:

<nodeLevel_1>

  <nodeLevel_1.1 value="a" />

  <nodeLevel_1.2 value="b" />

  <nodeLevel_1.3>
     <nodeLevel_1.3.1 value="c" />
  </nodeLevel_1.3>

</nodeLevel_1>

<nodeLevel_2>
   ....

这里我试图达到一个属性: nodeLevel_1.1/@valuenodeLevel_1.3.1/@value

但没有通过nodeLevel_1.2/@value

我尝试使用:descendant::nodeLevel1/@value 但是使用这个xpath,我获得了nodeLevel_1.2的@value属性,我不想要这个。

有没有办法用xpath管理这种情况?感谢。

1 个答案:

答案 0 :(得分:0)

您可以检查标记名称是否不等于nodeLevel_1.2

使用xmllint进行测试:

$ cat input.xml
<nodeLevel_1>
  <nodeLevel_1.1 value="a" />
  <nodeLevel_1.2 value="b" />
  <nodeLevel_1.3>
     <nodeLevel_1.3.1 value="c" />
  </nodeLevel_1.3>
</nodeLevel_1>

$ xmllint input.xml --xpath "//descendant::nodeLevel_1/*[not(self::nodeLevel_1.2)]/@value"
 value="a"