python-为什么ElementTree.iterparse()引发ParseError?
作者:互联网
import xml.etree.ElementTree as ET
xmldata = file('my_xml_file.xml')
tree = ET.parse(xmldata)
root = tree.getroot()
root_iter = root.iter()
现在,我可以调用root_iter.next()并获取我的Element对象.问题是我正在使用的真实文件很大,无法将其全部放入内存中.所以我正在尝试使用:
parse_iter = ET.iterparse(xmldata)
如果我调用parse_iter.next(),它将引发以下内容
Traceback (most recent call last):
File "<pyshell#38>", line 1, in <module>
parse_iter.next()
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1260, in next
self._root = self._parser.close()
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1636, in close
self._raiseerror(v)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1488, in _raiseerror
raise err
ParseError: no element found: line 1, column 0
我究竟做错了什么?
解决方法:
我拥有的代码非常好,除了我在已经用ElementTree.parse()读取的文件对象上调用ElementTree.iterparse()之外.天哪!
因此,对于那些碰巧犯同样错误的人,解决方案是打开一个新的文件对象或使用file.seek(0)
重置文件光标.
标签:elementtree,xml,python,parsing,xml-parsing 来源: https://codeday.me/bug/20191202/2086973.html