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

时间:2011-11-15 02:49:56

标签: python elementtree

我一直在寻找。有没有办法根据标签的文本值直接检索子项?

例如:

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

并说我要检索孩子的“c”文本值== j。有没有办法做到这一点,除了必须让所有的“b”孩子循环并检查c值?

1 个答案:

答案 0 :(得分: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']")

这个答案是相关的:How do I match contents of an element in XPath (lxml)?