<?xml version="1.0" ?> <data> <test > <f1 /> </test > <test2 > <test3> <f1 /> </test3> </test2> <f1 /> </data>
使用lxml是否可以递归地找到标签“ f1”?我尝试了findall方法,但仅适用于直系儿童。
我想我应该为此选择BeautifulSoup !!!
您可以使用XPath进行递归搜索:
>>> from lxml import etree >>> q = etree.fromstring('<xml><hello>a</hello><x><hello>b</hello></x></xml>') >>> q.findall('hello') # Tag name, first level only. [<Element hello at 414a7c8>] >>> q.findall('.//hello') # XPath, recursive. [<Element hello at 414a7c8>, <Element hello at 414a818>]