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

Python XML ElementTree无法读取含&的节点问题求助

问题原因及解决方案

问题本质

XML规范明确要求特殊字符(&、<、>、"、')必须转义,其中&必须写成&amp;。你的XML文件中存在未转义的&(比如JAMES&001),直接违反了XML格式规则,导致ElementTree解析时触发格式错误。

修复方法

分两种场景处理:

1. 直接修改源XML文件

用文本编辑器打开XML文件,将所有未转义的&替换为&amp;。注意不要替换已经转义的合法实体(比如&amp;、&lt;等),可以用正则查找替换:

  • 查找规则:&(?!amp;|lt;|gt;|quot;|apos;)
  • 替换为:&amp;

2. Python读取时预处理(无法修改源文件时)

先读取文件内容,预处理修复未转义的&,再解析XML:

import xml.etree.ElementTree as et
import re

# 读取原始XML内容
with open("your_file.xml", 'r', encoding='utf-8') as f:
    xml_content = f.read()

# 替换未转义的&,保留合法的XML实体
fixed_xml = re.sub(r'&(?!amp;|lt;|gt;|quot;|apos;)', r'&amp;', xml_content)

# 解析修复后的XML
root = et.fromstring(fixed_xml)
ids = root.findall("uid")

注意事项

如果你的XML中包含自定义实体(比如&my_entity;),上述正则会误替换这类实体的&,此时需要调整正则规则,或者先在XML中定义自定义实体再进行解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:15:41