【问题标题】:Parsing XML with python ElementTree: ParseError: mismatched tag使用 python ElementTree 解析 XML: ParseError: mismatched tag
【发布时间】:2020-01-25 12:40:39
【问题描述】:

我有几个 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

【问题讨论】:

    标签: python xml parsing xml-parsing elementtree


    【解决方案1】:

    看看ParseError: mismatched tag: line 449, column 3这一行。

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

    另一种选择:访问任何 XML 验证站点并检查问题所在 与您的文件。

    【讨论】:

    • 我已经通过验证器运行了它,它实际上也是另一个工作程序的一部分。所以没关系。我已经尝试评论 400-500 左右的行,但无论我在评论什么行,我仍然会遇到同样的错误。
    • 不,nvm,找到了标签。由于某种原因,它不在第 449 行
    • @LevSlinsen 请解释问题所在。这可以避免其他人浪费时间(比如我)。
    • @Itération122442,真的很抱歉,这是几个项目之前的事情,在我解决了问题之后,它再也没有发生过。所以我什至忘记了它在哪里。
    【解决方案2】:

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

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

    xml.etree.ElementTree.ParseError:标签不匹配:第 12 行,第 2 列

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

    向后检查您的输入是否有给您此错误的开始标签。

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2021-10-08
      相关资源
      最近更新 更多