python – 在不使用DOM方法的情况下迭代解析大型XML文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 在不使用DOM方法的情况下迭代解析大型XML文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1128字,纯文字阅读大概需要2分钟。
内容图文
我有一个xml文件
<temp>
<email id="1" Body="abc"/>
<email id="2" Body="fre"/>
.
.
<email id="998349883487454359203" Body="hi"/>
</temp>
我想阅读每个电子邮件标签的xml文件.也就是说,在我想要从中读取电子邮件id = 1..extract body时,读取的电子邮件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')
现在,一旦我得到根…我不知道为什么我的代码无法解析.
使用iterparse时的代码抛出以下错误:
"UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 437: ordinal not in range(128)"
有人可以帮忙
解决方法:
iterparse的一个例子:
import cStringIO
from xml.etree.ElementTree import iterparse
fakefile = cStringIO.StringIO("""<temp>
<email id="1" Body="abc"/>
<email id="2" Body="fre"/>
<email id="998349883487454359203" Body="hi"/>
</temp>
""")
for _, elem in iterparse(fakefile):
if elem.tag == 'email':
print elem.attrib['id'], elem.attrib['Body']
elem.clear()
只需用您的真实文件替换fakefile即可.
另请阅读this了解更多详情.
内容总结
以上是互联网集市为您收集整理的python – 在不使用DOM方法的情况下迭代解析大型XML文件全部内容,希望文章能够帮你解决python – 在不使用DOM方法的情况下迭代解析大型XML文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。