我一直在寻找。有没有办法根据标签的文本值直接检索子项?
例如:
<a>
<b>
<c>h</c>
</b>
<b>
<c>j</c>
</b>
</a>
并说我要检索孩子的“c”文本值== j。有没有办法做到这一点,除了必须让所有的“b”孩子循环并检查c值?
答案 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)?