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