我一直在玩用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
答案 0 :(得分:1)
总结并扩展对问题的评论:
ExpatError
是 expat 报告错误时引发的异常类型。 expat 是 Python 标准库的 XML 解析模块。
minidom
是 Python 的文档对象模型接口的最小实现,在调用 minidom.parseString()
时在内部使用 expat 来解析 XML 输入。
输入 XML 中的拼写错误给它留下了一个未关闭的 <pesron>
标记,触发 expat 通过抛出 ExpatError
来指示这一点。
至于名称 expat 的由来,它不是英文中“exatriate”的引用,而是模块描述的缩写版本:(E)Xml PArser Toolkit。