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

Python XML解析:如何获取子元素中子节点后的文本内容

解决Python ElementTree获取子元素后文本的问题

这个场景我太熟悉啦!你遇到的问题是因为ElementTree对XML文本的存储规则:元素的text属性只保存该元素第一个子元素之前的文本,而子元素之后的文本会存在那个子元素的tail属性里。

你的原XML里,"it"是在<PTR>标签之后,所以它属于<PTR>元素的tail,而不是<EXP ID="1">的text。

修改后的代码示例

import xml.etree.ElementTree as ET

sample = '''<EXP ID="2"> <W> love <EXP ID="1"> <PTR src="0" /> it </EXP> </W> </EXP>'''
r = ET.fromstring(sample)

for c in r:
    # 用strip()去掉多余空白字符,让输出更整洁
    print(c.tag, c.attrib, c.text.strip())
    for d in c:
        print(d.tag, d.attrib, end=' ')
        # 遍历d的子元素(也就是<PTR>),获取它的tail属性
        for child in d:
            print(child.tail.strip())

执行这段代码后,输出就会符合你的期望:

W {} love
EXP {'ID': '1'} it

如果知道XML结构,还可以直接定位目标文本

如果不需要遍历所有元素,而是直接获取"it",可以用XPath快速定位:

exp_element = r.find('.//EXP[@ID="1"]')
ptr_element = exp_element.find('PTR')
print(ptr_element.tail.strip())  # 直接输出 'it'

补充知识点

  • element.text:存储元素起始标签到第一个子元素之间的文本
  • element.tail:存储元素结束标签到父元素的下一个子元素(或父元素结束标签)之间的文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:10:49