Python 捕获错误XML时的错误

Python 捕获错误XML时的错误,python,xml-parsing,python-3.2,Python,Xml Parsing,Python 3.2,我使用xml.dom.minidom解析字符串中的一些xml。当提供的XML格式不正确时,我需要处理一个错误案例。我犯了什么错误 换句话说,下面应该用什么来代替BadXml try: from xml.dom import minidom in_xml = minidom.parseString(some_string) except BadXml: handle_bad_xml(some_string) 我想这就是你想要的: from xml.parsers.expa

我使用
xml.dom.minidom
解析字符串中的一些xml。当提供的XML格式不正确时,我需要处理一个错误案例。我犯了什么错误

换句话说,下面应该用什么来代替
BadXml

try:
    from xml.dom import minidom
    in_xml = minidom.parseString(some_string)
except BadXml:
    handle_bad_xml(some_string)

我想这就是你想要的:

from xml.parsers.expat import ExpatError

try:
    from xml.dom import minidom
    in_xml = minidom.parseString(some_string)
except ExpatError:
    handle_bad_xml(some_string)

最终,唯一的答案是您必须捕获异常
minidom
没有实现
DomeException
,虽然它使用了
xml.dom
中的一些常规异常,但它也自由地使用
TypeError
和其他标准python异常,它们唯一的公共基础是
Exception
本身。

我尝试了一个格式错误的字符串,这就是它引发的问题。但它总是引发同样的例外吗?解析器的选择取决于什么?
minidom
会直接引发许多异常,这些异常不会继承自
ExpatError
(事实上,在给定的python版本中,无法保证默认解析器将继续是
expatbuilder
minidom
会引发其他异常,但是对于格式错误的XML(以及当前使用的
expat
),我认为它总是会引发
ExpatError
,因为这是一个解析错误。我需要深入研究源代码以确认这一点。@missingfaktor:实际上,如果您需要更具体的东西,那么
minidom
不适合您-这是
minidom
的“超轻量”精简的一部分。如果您需要不提供的功能,您可能希望查看
lxml
ElementTree
,或任何其他可用的DOM提供程序。好的。我会暂时坚持使用minidom,如果我觉得有必要,我会切换。我接受你的回复。非常感谢。