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,如果我觉得有必要,我会切换。我接受你的回复。非常感谢。