Перехватите ExpatError в xmltodict

Я использую 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 ответа

Решение

Вам необходимо импортировать ExpatError от xml.parsers.expact,

from xml.parsers.expat import ExpatError

Нашел это, в течение xmltodict сам модуль, поэтому нет необходимости импортировать его отдельно от xml модуль

>>> try:                                             
...     xml_dict = xmltodict.parse(xml_data)
... except xmltodict.expat.ExpatError:
...     print "that's right"
... 
that's right
Другие вопросы по тегам