Parsing XML with python ElementTree: ParseError: mismatched tag

Parsing XML with python ElementTree: ParseError: mismatched tag

我有几个 XML 文件必须用 python ElemetTree 解析(它们是另一位开发人员遗留的)。

到目前为止,我已经稍微更正了这些文件并解析了一个很好的块,但在某些时候我遇到了这个解析错误,我无法解决这个问题。尝试解析原始文件(我正在使用当然的副本),但它仍然是相同的错误,即使它最初工作正常。

错误: ParseError: mismatched tag

我的代码是:

import xml.etree.ElementTree as ET
tree = ET.parse('astrod.xml')

完整的错误文本:

Traceback (most recent call last):

  File "D:\dev\tools\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-4-6aa074179306>", line 2, in <module>
    tree = ET.parse('astrod.xml')

  File "D:\dev\tools\Anaconda\lib\xml\etree\ElementTree.py", line 1197, in parse
    tree.parse(source, parser)

  File "D:\dev\tools\Anaconda\lib\xml\etree\ElementTree.py", line 598, in parse
    self._root = parser._parse_whole(source)

  File "<string>", line unknown
ParseError: mismatched tag: line 449, column 3

查看行 ParseError: mismatched tag: line 449, column 3

line 449 是源 XML 文件中的行号。 找到这一行,看看内容有什么问题。 可能这一行包含一些标签(例如关闭),但没有 开幕式.

另一种方法:访问任何 XML 验证站点并检查哪里出了问题 用你的文件。

我发现有时您会在比实际错误晚很多的行号处收到此错误。当您关闭未正确打开的标签时,它只会注意到错误。查看文件前面的内容。

例如,我遇到了类似的问题,错误消息声称

xml.etree.ElementTree.ParseError: mismatched tag: line 12, column 2

但错误不在上述行,我在开头拼错了一个标签。

通过您的输入向后检查出现此错误的开始标记。