【发布时间】:2012-04-09 00:20:39
【问题描述】:
我必须解析一个具有如下结构的 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>
到目前为止,我已经尝试了两件事:i) 读取整个文件并使用 .find(xmltag) 进行处理;ii) 使用 lxml 和 iterparse() 解析 xml 文件。 第一个选项我已经让它工作了,但它很慢。第二个选项我还没有成功。
这是我拥有的部分内容:
for event, element in etree.iterparse(path_to_file, tag="BlogPost"):
if element.tag == "BlogPost":
print element.text
else:
print 'Finished'
结果只有空格,里面没有文字。
我一定是做错了什么,但我无法理解。另外,如果还不够明显,我对 python 还是很陌生,这是我第一次使用 lxml。请帮忙!
【问题讨论】:
-
好吧,
BlogPost标签中似乎没有任何文字。 -
是的。获取开始和结束 BlogPost 标签之间的所有内容的方法是什么?
-
如果您只需要
BlogPost标签内的所有信息,请遵循 andrew 的建议。如果您希望它是 HTML 格式的,请将lxml.etree.tostring()应用于它们。
标签: python xml parsing lxml iterparse