我有一个大文档(400 mb),其中包含数百个XML文档,每个文档都有自己的声明。我试图使用Python中的ElementTree解析每个文档。我在拆分每个XML文档以解析信息时遇到了很多麻烦。以下是文档的示例:
<?xml version="1.0"?>
<data>
<more>
<p></p>
</more>
</data>
<?xml version="1.0"?>
<different data>
<etc>
<p></p>
</etc>
</different data>
<?xml version="1.0"?>
<continues.....>
理想情况下,我想阅读每个XML声明,解析数据,然后继续下一个XML文档。任何建议都会有帮助。
答案 0 :(得分:2)
您需要单独阅读文件;这是一个生成器函数,它将从给定的文件对象中生成完整的XML文档:
def xml_documents(fileobj):
document = []
for line in fileobj:
if line.strip().startswith('<?xml') and document:
yield ''.join(document)
document = []
document.append(line)
if document:
yield ''.join(document)
然后使用ElementTree.fromstring()
加载和解析这些:
with open('file_with_multiple_xmldocuments') as fileobj:
for xml in xml_documents(fileobj):
tree = ElementTree.fromstring(xml)