无法在 Python 中解析 XML 文件 - xml.etree.ElementTree.ParseError

斯特凡·拉多尼奇

我正在尝试使用 Python 的 xml 模块解析 XML 文件中的信息。问题是,当我指定文件列表并开始解析策略时,在(据称)成功解析第一个文件后,出现以下错误:

Parsing 20586908.xml ..
Parsing 20586934.xml ..


Traceback (most recent call last):
  File "<ipython-input-72-0efdae22e237>", line 11, in parse
    xmlTree = ET.parse(xmlFilePath, parser = self.parser)
  File "C:\Users\StefanCepa995\miniconda3\envs\dl4cv\lib\xml\etree\ElementTree.py", line 1202, in parse
    tree.parse(source, parser)
  File "C:\Users\StefanCepa995\miniconda3\envs\dl4cv\lib\xml\etree\ElementTree.py", line 601, in parse
    parser.feed(data)
xml.etree.ElementTree.ParseError: parsing finished: line 1755, column 0

这是我用来解析 XML 文件的代码:

class INBreastXMLParser:
    def __init__(self, xmlRootDir):
        self.parser         = ET.XMLParser(encoding="utf-8")
        self.xmlAnnotations = [os.path.join(root, f)
                                   for root, dirs, files in os.walk(xmlRootDir)
                                              for f in files if f.endswith('.xml')]
    def parse(self):
        for xmlFilePath in self.xmlAnnotations:
            logger.info(f"Parsing {os.path.basename(xmlFilePath)} ..")
            try:
                xmlTree = ET.parse(xmlFilePath, parser = self.parser)
                root    = xmlTree.getroot()
            except Exception as err:
                logging.error(f"Could not parse {xmlFilePath}. Reason - {err}")
                traceback.print_exc()
                

这是解析失败的文件部分的屏幕截图:

在此处输入图片说明

微信

问题是ET.XMLParser实例被重用。ElementTree 使用的底层 XML 库 (Expat)不支持

由于pyexpat使用的Expat库的限制,返回的xmlparser实例只能用于解析单个XML文档。为每个文档调用 ParserCreate 以提供唯一的解析器实例。

您需要为每个 XML 文件创建一个新的解析器。移动

self.parser = ET.XMLParser(encoding="utf-8") 

__init__方法到parse方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用xml.etree.ElementTree打印格式正确的xml文件

使用ElementTree示例在Python中解析XML

在python中通过xml.etree.ElementTree生成的xml文件中插入换行符

使用xml.etree.ElementTree获取文件中的XML标签列表

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

python-xml.etree.ElementTree.ParseError:格式不正确(无效的令牌)

在xml.etree.ElementTree,Python中获取“子级”的“同级”,

Python:xml.etree.ElementTree销毁xml格式

xml.etree.ElementTree.ParseError:格式不正确(无效的令牌)

使用Python和xml.etree.ElementTree解析XML时遇到一些挑战

XML解析问题,一些孟加拉字符在Python ElementTree中显示ParseError

使用Python xml.etree解析xml文件:空结果

使用python ElementTree解析XML:ParseError:标记不匹配

python(xml.etree.ElementTree)中的XML解析

无法使用xml.etree.ElementTree解析html

使用Python模块xml.etree.ElementTree解析有点复杂的XML并将值存储在List中

xml.etree.ElementTree:OSError:[Errno 22]解析多个文件时

使用xml.etree.ElementTree的Python xml解析不起作用

xml.etree.ElementTree findall

如何使用 xml.etree.ElementTree 解析 XML 文件,其子项中有 HTML 内容

Python xml.etree.ElementTree 问题

使用 Python xml.etree.ElementTree 遍历 XML 树的问题

尝试使用 PY3 从 XML 中提取数据时出现 xml.etree.ElementTree.ParseError 问题

Python xml.etree.ElementTree 解析强制编码

如何处理在 python xml.etree.ElementTree 中修改 XML 的隐式命名空间

修复 xml.etree.ElementTree.ParseError: undefined entity è

使用 xml.etree.ElementTree 解析某些元素的问题

使用 Python xml.etree.ElementTree 从 xml 文件中按名称获取元素值

如何使用 xml.Etree.ElementTree 解析 XML?