什么是ExpatError?

时间:2013-03-28 00:22:17

标签: python xml

我一直在玩用Python解析XML,我发现在我的XML标签中拼写错误会引发ExpatError。既然我认为我的代码不在国外,那么ExpatError引用的是什么呢?

拼错代码:

minidom.parseString("<people><pesron>Dan</person><person>John</person></people>")

结果:

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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