【发布时间】:2012-04-19 21:24:32
【问题描述】:
我有一个 xml 文件
<temp>
<email id="1" Body="abc"/>
<email id="2" Body="fre"/>
.
.
<email id="998349883487454359203" Body="hi"/>
</temp>
我想读取每个电子邮件标签的 xml 文件。也就是说,有一次我想读取电子邮件 id=1..从中提取正文,读取的电子邮件 id=2...并从中提取正文...等等
我尝试使用 DOM 模型进行 XML 解析,因为我的文件大小为 100 GB..该方法不起作用。然后我尝试使用:
from xml.etree import ElementTree as ET
tree=ET.parse('myfile.xml')
root=ET.parse('myfile.xml').getroot()
for i in root.findall('email/'):
print i.get('Body')
现在,一旦我获得了 root..我不明白为什么我的代码无法解析。
使用 iterparse 时的代码抛出以下错误:
"UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 437: ordinal not in range(128)"
谁能帮忙
【问题讨论】:
-
我试过了,但考虑到我的文件大小,有人建议我使用“lxml”,我也没有完全了解如何使用 iterparse。另外,非常感谢您的回复。 :)
-
你试过
xml.etree.ElementTree.iterparse()吗? -
@Dikie 感谢您的回复 :) 实际上我没有得到 iterparse 的概念,虽然我已经尝试从ibm.com/developerworks/xml/library/x-hiperfparse 学习它..有人可以通过一个例子来解释它。
-
@JannatArora LXML 支持 SAX 解析。
标签: python xml xml-parsing lxml