python ElementTree查找具有某些文本值的子级

bb2*_*bb2 0 python elementtree

我已经搜索了一段时间。有没有一种方法可以根据标签的文本值直接检索子级?

例如:

 <a>
   <b>
       <c>h</c>
   </b>
   <b>
       <c>j</c>
   </b>
</a>
Run Code Online (Sandbox Code Playgroud)

并说我想检索其“ c”文本值为== j的孩子。除了必须获取所有“ b”子代并遍历它们并检查c值之外,还有其他方法吗?

Aco*_*orn 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']")
Run Code Online (Sandbox Code Playgroud)

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