【问题标题】:Why is ElementTree.iterparse() raising a ParseError?为什么 ElementTree.iterparse() 会引发 ParseError?
【发布时间】:2011-10-07 15:48:24
【问题描述】:
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

我做错了什么?

【问题讨论】:

    标签: python xml parsing xml-parsing elementtree


    【解决方案1】:

    我的代码非常好,除了我在一个已经用ElementTree.parse() 读取的文件对象上调用ElementTree.iterparse()。哦!

    所以对于那些碰巧犯同样错误的人,解决办法是要么打开一个新的文件对象,要么使用file.seek(0)重置文件光标。

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2015-10-03
      • 2021-05-02
      • 2021-09-25
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多