什么是 ExpatError?

Dan*_*Dan 7 python xml

我一直在尝试使用 Python 解析 XML,并且发现在 XML 标记中犯下拼写错误会引发ExpatError. 由于我不认为我的代码驻留在外国,那么ExpatError一般来说,它指的是什么?

拼写错误的代码:

minidom.parseString("<people><pesron>Dan</person><person>John</person></people>")
Run Code Online (Sandbox Code Playgroud)

结果是:

ExpatError                                Traceback (most recent call last)
<ipython-input-5-9c00296c48cb> in <module>()
----> 1 minidom.parseString("<people><pesron>Dan</person><person>John</person></people>")

/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/xml/dom/minidom.pyc in parseString(string, parser)
   1928     if parser is None:
   1929         from xml.dom import expatbuilder
-> 1930         return expatbuilder.parseString(string)
   1931     else:
   1932         from xml.dom import pulldom

/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/xml/dom/expatbuilder.pyc in parseString(string, namespaces)
    938     else:
    939         builder = ExpatBuilder()
--> 940     return builder.parseString(string)
    941 
    942 

/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/xml/dom/expatbuilder.pyc in parseString(self, string)
    221         parser = self.getParser()
    222         try:
--> 223             parser.Parse(string, True)
    224             self._setup_subset(string)
    225         except ParseEscape:

ExpatError: mismatched tag: line 1, column 21
Run Code Online (Sandbox Code Playgroud)

uri*_*rig 4

总结并扩展对该问题的评论:

ExpatError是expat报告错误时引发的异常类型。expat 是Python 标准库的XML 解析模块。

minidom是 Python 文档对象模型接口的最小实现,在minidom.parseString()调用时在内部使用 expat 来解析 XML 输入。

输入 XML 中的拼写错误给它留下了一个<pesron>未关闭的标记,触发 expat 通过抛出ExpatError.

至于 expat 名称的由来,它不是指英语中的“expatriate”,而是模块描述的缩写版本:(E)Xml PArser Toolkit。