【发布时间】:2018-09-17 13:16:55
【问题描述】:
使用表达式.//b,我可以找到所有元素在当前元素的标签b。如果当前元素也有b 标签,则不会被找到。如果它与给定的标签名称匹配,我如何表达我想要找到当前标签的所有子标签以及当前元素本身?
这里是一些输入xml的例子:
<a>
<b>
<i>
<u>one</u>
</i>
<b>two</b>
</b>
<b>three</b>
<em>four</em>
</a>
如果第一个元素<b>是当前元素,我想获取所有子元素(即包含two的元素)和元素本身,但不是包含three的元素(搜索标签@ 987654328@)。在搜索标签u 时,我只想获取包含one 的标签。
我试过.[name()='b']|.//b,但这显然是一个无效的表达式。
我也尝试了..//b,但我不仅得到了元素本身和包含two的元素,还得到了包含three的元素。
这是否可以通过一个 XPath 表达式来获得我想要的?
旁注:我在 Python 的 lxml/etree 库中使用它,但这应该没什么区别。
【问题讨论】:
-
尝试使用
//b。使用.//b毫无意义。//b应该给你带来<b>元素,里面有所有东西。 -
不,
.//b很有意义,它的含义与//b完全不同。信息错误!
标签: python xml xslt xpath lxml