Перехватите 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