You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML解析报错:格式不正确(无效令牌),如何从字符串创建XML树?

XML解析格式错误的解决方案

问题重现

原代码

import xml.etree.ElementTree as ET

r="""<root nsp="suan2.0" nsp:host="1" id='%s'></root>""" %obj['value']
root = ET.fromstring(r,ET.XMLParser())

生成的XML字符串

<root nsp="suan2.0" nsp:host="1" id='newapp'></root>

报错信息

anaconda3\lib\xml\etree\ElementTree.py,line 1342,in XML parser.feed(text)
    xml.etree.ElementTree.ParseError:not well formed (invalid token)

问题原因

XML里带冒号的属性(比如nsp:host)中,冒号前的nsp属于命名空间前缀,必须通过xmlns:nsp="命名空间URI"的格式提前声明。原代码里的nsp="suan2.0"不是合法的命名空间声明方式,导致解析器无法识别前缀,触发格式错误。

解决方法

把原XML中的nsp="suan2.0"修改为xmlns:nsp="suan2.0",完成命名空间前缀的合法声明。

修正后的代码

import xml.etree.ElementTree as ET

# 修正命名空间声明格式
r="""<root xmlns:nsp="suan2.0" nsp:host="1" id='%s'></root>""" %obj['value']
root = ET.fromstring(r,ET.XMLParser())

验证结果

修正后生成的XML字符串为:

<root xmlns:nsp="suan2.0" nsp:host="1" id='newapp'></root>

此时ElementTree可以正常解析该XML字符串,不会再抛出格式错误。

内容的提问来源于stack exchange,提问作者James Fowler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 02:22:03