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

使用Python的root.iter解析XML无法获取<w>标签文本问题

问题原因及解决方案

你的代码无法提取<w>标签文本,核心问题是XML文档使用了默认命名空间。根元素<CHAT>中的xmlns="http://www.talkbank.org/ns/talkbank"定义了全局默认命名空间,所有未加前缀的标签(包括<w>)都属于该命名空间,直接用root.iter('w')无法匹配到目标标签。

以下是三种可行的解决方法:

方法1:显式指定命名空间匹配

直接使用完整的命名空间标签名查找,或者注册命名空间前缀后简化查找:

import xml.etree.ElementTree as ET

tree = ET.parse('020012_doctored.xml')
root = tree.getroot()

# 方式1:直接使用完整命名空间标签名
for w in root.iter('{http://www.talkbank.org/ns/talkbank}w'):
    print(w.text)

# 方式2:注册命名空间前缀,用前缀简化查找
ns = {'tb': 'http://www.talkbank.org/ns/talkbank'}
for w in root.findall('.//tb:w', ns):
    print(w.text)

方法2:忽略命名空间,通过本地标签名匹配

遍历所有标签,提取标签名的本地部分进行判断:

import xml.etree.ElementTree as ET

tree = ET.parse('020012_doctored.xml')
root = tree.getroot()

for elem in root.iter():
    # 拆分命名空间和本地标签名
    local_tag = elem.tag.split('}')[-1]
    if local_tag == 'w':
        print(elem.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:05:34