【发布时间】: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