我有一个大型XML文件,大致结构化(按此顺序):
<document>
<interesting_part>
...
</interesting_part>
<foo>
...
60000 lines
...
</foo>
</document>
我的节目是:
from xml.etree import ElementTree as et
f=open(path_f)
tree=et.parse(f)
f.close()
# retreive infos from tree...
只有前几个块让我对文件感兴趣,但性能很低,因为et.parse()会加载整个文件。
如何加载文件直到&lt; / interesting_part&gt; ?
我想到了类似的东西:
class My_Parser(et.XMLParser):
????
my_parser = My_Parser()
tree=et.parse(f, my_parser)
提前感谢你, 埃里克。
答案 0 :(得分:4)
请改用iterparse()
function,只需在符合要求时停止迭代:
for event, element in et.iterparse(f):
if element.tag == 'interesting_part':
# `element` is the complete <interesting_part> element, with children
# process it
break # ends parsing.