python ElementTree 查找具有特定文本值的子元素

0 投票
1 回答
1742 浏览
提问于 2025-04-17 06:20

我搜索了很久,想知道有没有办法直接根据标签的文本值来获取一个子元素?

举个例子:

 <a>
   <b>
       <c>h</c>
   </b>
   <b>
       <c>j</c>
   </b>
</a>

假设我想获取子元素“b”,它的“c”文本值等于“j”。有没有其他方法可以做到这一点,而不是先获取所有的“b”子元素,然后一个个检查它们的“c”值呢?

1 个回答

5

如果你使用lxml这个库,你可以用XPath表达式//c[text()='j']来查找内容。

import lxml.etree as et

doc = '''
<a>
   <b>
       <c>h</c>
   </b>
   <b>
       <c>j</c>
   </b>
</a>
'''

tree = et.fromstring(doc)

tree.xpath("/a/b/c[text()='j']")

这个回答很相关:如何在XPath (lxml)中匹配元素的内容?

撰写回答