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

如何用Python提取XML中多个同名pineapple标签的属性值

问题原因
  • 存储数据的data字典定义在循环外层,每次遍历entity节点都会覆盖pineapple字段的值,最终只会保留最后一个节点的取值,这是返回结果重复的核心原因
  • 代码存在多处语法错误:
    • XPath属性匹配语法错误,属性匹配使用等号而非冒号,[@name:'pineapple']需改为[@name='pineapple']
    • 字符串、引号存在多处未闭合的问题
    • 字典初始化语法错误,键值对使用冒号分隔而非等号,入参与内部使用的变量名不统一
    • 内层循环已遍历到目标attribute节点,无需重复调用find查找
  • 最终返回仅包含单个data对象的列表,无法输出多个结果
修正后的代码
import xml.etree.ElementTree as ET

def extract_pineapple(self, cd, cs, root):
    # 定义结果列表存储所有entity对应的数据
    result = []
    for c in root.findall("./csData/entity[@type='a']"):
        # 每个entity单独生成一个data字典
        data = {'cd_id': cd, 'cs_id': cs}
        # 查找当前entity下的pineapple属性
        attr = c.find("./attribute[@name='pineapple']")
        if attr is not None:
            data['pineapple'] = attr.get('value')
        result.append(data)
    return result
补充说明

你提供的XML示例存在标签未闭合的问题,两个<entity>标签都缺少对应的</entity>闭合标签,运行前需要先修正为合法XML结构。如果不需要保留cd_id和cs_id的结构,仅需要提取所有pineapple的value值,可以直接将取值添加到列表返回即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:54:00