我必须解析一个1Gb XML文件,并在下面的结构中提取标签“作者”和“内容”中的文本:使用lxml和iterparse()来解析一个大的(+ 1Gb)XML文件
<Database>
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
[...]
<BlogPost>
<Date>MM/DD/YY</Date>
<Author>Last Name, Name</Author>
<Content>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas dictum dictum vehicula.</Content>
</BlogPost>
</Database>
到目前为止,我已经试过两件事情:1)读取整个文件,并通过它与.find(xmltag会)和ii)与解析lxml的xml文件和iterparse()。 第一个选项我已经得到它的工作,但它非常缓慢。第二种选择我没有设法实现它。
这里是什么,我有一部分:
for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
if element.tag == "BlogPost":
print element.text
else:
print 'Finished'
的,其结果只能是空白,在他们没有文字。
我一定在做错事,但我无法把握。另外,如果它不够明显,我对Python非常陌生,这是我第一次使用lxml。请帮忙!
那么'BlogPost'标签似乎并不包含任何文本。 – 2012-03-24 22:30:59
是的。什么是获取开放和结束BlogPost标签之间的所有内容的方法? – mvime 2012-03-24 22:52:00
如果您只需要'BlogPost'标签内的所有信息,请遵循andrew的建议。如果你想要HTML格式,请将'lxml.etree.tostring()'应用于它们。 – 2012-03-24 22:56:53