程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

xml.etree.ElementTree.ParseError —异常处理未捕获错误

发布于2020-01-16 13:32     阅读(1632)     评论(0)     点赞(30)     收藏(4)


我正在尝试解析一个XML文档该文档具有许多未定义的实体,这些实体在尝试运行代码时会导致ParseError,如下所示:

import xml.etree.ElementTree as ET

tree = ET.parse('cic.fam_lat.xml')
root = tree.getroot()

while True:
    try:
        for name in root.iter('name'):
            print(root.tag, name.text)
    except xml.etree.ElementTree.ParseError:
        pass

for name in root.iter('name'):
    print(name.text)

所述错误的示例如下,并且有许多未定义的实体都将引发相同的错误: 错误说明

我只想忽略它们,而不是去编辑每一个。我应该如何编辑异常处理以捕获这些错误实例?(即我在做什么错?)


解决方案


有一些解决方法,例如定义自定义实体,建议在:

但是,如果您能够切换到lxml,它XMLParser()可以在“恢复”模式下工作,该模式将“忽略”未定义的实体:

import lxml.etree as ET

parser = ET.XMLParser(recover=True)
tree = ET.parse('cic.fam_lat.xml', parser=parser)

for name in root.iter('name'):
    print(root.tag, name.text)

(为我工作-打印了标签名称和文本)



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/224769/15e603ca2cfb9275b4a4/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)