在Python中解析多个根XML文件

时间:2016-07-10 10:34:09

标签: python xml xml-parsing elementtree

我是Python的初学者。 我使用带有ElementTree的Python 2.7来解析XML文件。 我有一个大的XML文件(~700 MB),它包含多个根实例,例如:

 <?xml version="1.0" ?> <foo> <bar> <sometag> Mehdi  </sometag> <someothertag> blahblahblah </someothertag> . . . </bar> </foo>
 <?xml version="1.0" ?> <foo> <bar> <sometag> Hamidi </sometag> <someothertag> blahblahblah </someothertag> . . . </bar> </foo>
...
...

每个xml实例都放在一行中。 我需要在python中解析这样的文件。我用这种方式使用了ElementTree:

import xml.etree.ElementTree as ET
tree = ET.parse('filename.xml')
root = tree.getroot()

但它似乎只能访问第一个根XML实例行。 在这种类型的文件中解析所有XML实例的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

你可能想这样做:

from xml.etree import ElementTree as ET
root = ET.parse("file.xml").getroot()
getpid = root.iter("bar")

您也可以在线查看xml验证。 https://www.xmlvalidation.com/

答案 1 :(得分:0)

您也可以使用 lxml.etree.iterparse() 方法,它的运行速度非常快。 IBM 建议 - https://www.ibm.com/developerworks/xml/library/x-hiperfparse/

for _, elem in etree.iterparse("filename.xml"):
    if elem.tag == 'bar':
        print(elem.text)
    elem.clear()