【问题标题】:xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 104, column 109xml.etree.ElementTree.ParseError:格式不正确(无效标记):第 104 行,第 109 列
【发布时间】:2017-05-02 07:05:24
【问题描述】:

我正在尝试使用 python 和元素树解析一个 itunes xml 库,它是这种形式:

<plist version="1.0">
    <dict>
        <key>Major Version</key>
        <integer>1</integer>
        <key>Minor Version</key>
        <integer>1</integer>
        ...
        ...
        ...
        <dict>
            <key>Track ID</key>
            <integer>156</integer>
            <key>Name</key>
            <string>Stairway to heaven</string>
            ...
            ...
         </dict>
         <dict>
            <key>Track ID</key>
            <integer>342</integer>
            <key>Name</key>
            <string>Summer of 69</string>
            ...
            ...
         </dict>
    </dict>
</plist>

我试图用以下方式解析它: 将 xml.etree.ElementTree 导入为 ET

fname = input('Enter file name: ')
stuff = ET.parse(fname)

但是我收到这样的错误:“xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 104, column 109”。我在发布之前搜索了 Stackoverflow,但我找不到任何对我的情况帖子有帮助的东西。任何人都可以发布我可能不小心跳过或帮助的任何相关帖子吗?

附:我尝试将编码更改为“utf-8”,但什么也没发生。我也试过:

parser = etree.XMLParser(recover=True)

但也没有任何改变。

【问题讨论】:

  • 你能确定它告诉你的 xml 文件的哪一行吗?它可能是正确的,并且 xml 格式不正确(缺少匹配的标签等)
  • 好吧,它在错误消息中也显示了这一点: Traceback(最近一次调用最后一次):文件“tracks.py”,第 50 行,在 stuff = ET.fromstring(fname) 文件中“C:\Users\Left\Anaconda3\lib\xml\etree\ElementTree.py”,第 1334 行,在 XML 返回 parser.close() 我猜是 1334 行。但只要我能看到,那里没有错。至少是第一眼。

标签: python xml elementtree


【解决方案1】:

问题在于 xml 文件缩进。我不知道它实际上发挥了作用,但我保存了 xml 文件并用记事本 ++ 打开它并工作。

【讨论】:

  • 您能接受这个答案吗?当人们在没有接受答案的情况下搜索未回答的问题时。谢谢。
  • 我已经这样做了,但它说:您可以在 2 天内接受自己的答案。
  • 我忘记了,抱歉。
  • 缩进?真的吗?对我来说似乎难以置信。
  • 是的,我以错误的方式保存它,然后我用记事本++打开它后没有缩进。我以为不会有任何问题,但我一直有上述错误。在我尝试了一切之后,我说我会尝试再次保存它。这次我以正确的方式保存它,在我用记事本++打开 xml 后,出现了正确的缩进。运行脚本后播放。奇怪。
猜你喜欢
  • 1970-01-01
  • 2018-12-05
  • 2016-04-17
  • 2019-01-15
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 2017-07-28
相关资源
最近更新 更多