无论XPATH的级别如何,都选择一个XML元素

Sim*_*eon 18 xml xpath

我有这个:

<a>
  <b>
    <t>text</t>
  </b>
</a>
<a>
  <t>text</t>
</a>
Run Code Online (Sandbox Code Playgroud)

所以我想选择文本而不管它在哪里.(请注意,它可以是不仅仅是1/2级别的任何地方,例如它可以没有父母)

这可能吗?

小智 27

您正在寻找descendant:

所述descendant轴包含上下文节点的后代; 后代是孩子或孩子的孩子等等; 因此,后代轴永远不会包含属性或命名空间节点

在你的情况下: /descendant:t

当然,正如其他人已经回答的那样,有一个缩写语法:

//是的缩写/descendant-or-self::node()/.例如,//para是for的缩写 /descendant-or-self::node()/child::para ,因此将选择para文档中的任何元素(因为文档元素节点是根节点的子节点,因此将选择para作为文档元素的元素//para)


Chr*_*lls 25

您可以使用//从当前节点中选择所有节点.所以//text()会选择所有文本节点.

如果你想要所有t元素,你会做//t.如果你想做t某个特定点的所有元素,那么你可以这样做/x/y//t.


mkr*_*erx 9

就好,//t如果你想要所有的<t>标签