捕获xmltodict中的ExpatError

13 投票
2 回答
9432 浏览
提问于 2025-04-18 16:24

我正在使用 xmltodict 来解析 XML 文件。

如果我们解析一个无效的 XML 文件,它会抛出一个 ExpatError 错误。

我该如何捕捉这个错误呢?这是我在 ipython 界面上尝试的代码:

>>> import xmltodict
>>> xml_data = """<?xml version="1.0" encoding="UTF-8" ?>
...     <Website>"""

>>> xml_dict = xmltodict.parse(xml_data)
ExpatError: no element found

>>> try:                      
...     xml_dict = xmltodict.parse(xml_data)
... except ExpatError:
...     print "that's right"
NameError: name 'ExpatError' is not defined

>>> try:                      
...     xml_dict = xmltodict.parse(xml_data)
... except xmltodict.ExpatError:
...     print "that's right"
AttributeError: 'module' object has no attribute 'ExpatError'

2 个回答

8

找到了,xmltodict模块本身就包含了这个功能,所以不需要单独从xml模块导入它。

>>> try:                                             
...     xml_dict = xmltodict.parse(xml_data)
... except xmltodict.expat.ExpatError:
...     print "that's right"
... 
that's right
14

你需要从 xml.parsers.expat 导入 ExpatError

from xml.parsers.expat import ExpatError

撰写回答