ElementTree中fromstring函数的上限

时间:2012-06-06 15:03:39

标签: python xml-parsing elementtree

我在Windows 32位PC上使用Python 2.4版本。我正在尝试使用ElementTree模块解析一个非常大的XML文件。我从effbot.org下载了该模块的1.2.6版本。

为了我的目的,我按照下面的代码:

import elementtree.ElementTree as ET

input = ''' 001 Chuck 009 Brent '''
stuff = ET.fromstring(input)
lst = stuff.findall("users/user")
print len(lst)

for item in lst:
    print item.attrib["x"]

item = lst[0]
ET.dump(item)
item.get("x") # get works on attributes
item.find("id").text
item.find("id").tag

for user in stuff.getiterator('user'):
    print "User" , user.attrib["x"]

ET.dump(user)

如果输入内容太大,超过10,000行,fromstring函数会引发错误(如下)。任何人都可以帮我纠正这个错误吗?

这是产生的错误:

  

回溯(最近一次调用最后一次):文件“C:\ Documents and Settings \ hariprar \ My Documents \ My files \ Python Try \ xml_try1.py”,第16行,in-intoplevel-stuff = ET.fromstring(输入)文件“C:\ Python24 \ Lib \ site-packages \ elementtree \ ElementTree.py”,第1012行,在XML中返回api.fromstring(text)文件“C:\ Python24 \ Lib \ site-packages \ elementtree \ ElementTree。 py“,第182行,instring parser.feed(text)文件”C:\ Python24 \ Lib \ site-packages \ elementtree \ ElementTree.py“,第1292行,在feed self._parser.Parse(data,0)ExpatError :格式不正确(令牌无效):第2445行,第39栏

1 个答案:

答案 0 :(得分:1)

查看iterparse功能。它会让你逐步解析你的输入,而不是把它作为一个大块读入内存。

这里描述:http://effbot.org/zone/element-iterparse.htm