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

如何用Python从XML中提取Items标签元素为可迭代列表

提取XML中嵌套CDATA的元素为可迭代列表

需求

从给定的嵌套CDATA的XML结构中,提取<items>标签下的所有<item>元素,整理为包含名称、价值、iva_tax的可迭代列表,示例输出如下:

  • 条目1:Bicycle,价值$250,iva_tax: 50.30
  • 条目2:Skateboard,价值$120,iva_tax: 25.0

完整实现代码

基于你已有的xml.etree.ElementTree代码片段,补充提取逻辑如下:

import xml.etree.ElementTree as ET

# 假设stringBase64是解码后的XML字符串(你原代码中已处理)
xml = ET.fromstring(stringBase64)
# 提取CDATA中的XML文本
ite = xml.find('.//detalle').text
# 解析CDATA内的XML
tixml = ET.fromstring(ite)

# 提取<items>下的所有<item>节点并整理为可迭代列表
items_list = []
# 定位<items>节点,遍历所有子<item>
for item in tixml.find('.//items').findall('item'):
    # 提取各字段内容
    nombre = item.find('nombre').text
    valor = f"${item.find('valor').text}"
    iva_tax = item.find('.//tax[@name="iva"]').get('value')
    # 结构化存储到字典
    items_list.append({
        'nombre': nombre,
        'valor': valor,
        'iva_tax': iva_tax
    })

# 验证可迭代性(遍历输出)
for idx, item in enumerate(items_list, 1):
    print(f"条目{idx}:{item['nombre']},价值{item['valor']},iva_tax: {item['iva_tax']}")

代码说明

  1. 定位嵌套节点:通过find('.//items')定位CDATA内的<items>节点,再用findall('item')获取所有子项,得到原生可迭代的节点集合。
  2. 字段提取逻辑:
    • 商品名称:直接读取<nombre>标签的文本内容
    • 商品价值:提取<valor>文本后添加$符号格式化
    • iva税值:用XPath筛选name="iva"的<tax>节点,获取其value属性值
  3. 结构化存储:将每个item的字段存入字典,最终形成可迭代的列表items_list,支持遍历、索引、切片等常规列表操作。

运行输出

条目1:Bicycle,价值$250,iva_tax: 50.30
条目2:Skateboard,价值$120,iva_tax: 25.0
条目3:Motorcycle,价值$900,iva_tax: 120.50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:50:27