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

如何将XML中SOURCEFIELD标签的attrib存入单个列表?

问题解决:将XML中SOURCEFIELD的属性汇总到列表

需求:提取XML文件里所有SOURCEFIELD标签的attrib属性,并存入单个列表。现有代码能逐个打印属性字典,但未完成汇总。

修改后的代码

import xml.etree.ElementTree as ET

# 使用原始字符串避免Windows路径转义问题
xml_path = r'C:\Users\dd00849401\Desktop\xml\m_DM_DIM_NRC_CUSTOMER.xml'

try:
    tree = ET.parse(xml_path)
    print("The XML is valid")
    root = tree.getroot()
except ET.ParseError:
    raise SyntaxError("XML格式无效")

sourcefield_attrs = []
print("*********** The Source details ***********")
for source in root.iter('SOURCE'):
    print("\n")
    sourcename = source.attrib['NAME']
    print(sourcename)
    print("*********** The DETAILS of SOURCE: %s ***********" % sourcename)
    print(source.attrib)
    print("*********** The COLUMN NAMES of SOURCE: %s ***********" % sourcename)
    # 将每个SOURCEFIELD的属性字典追加到列表
    for sourcefield in source.iter("SOURCEFIELD"):
        sourcefield_attrs.append(sourcefield.attrib)

# 打印汇总后的目标列表
print("\n汇总的SOURCEFIELD属性列表:")
print(sourcefield_attrs)

修改说明

  1. 修复路径问题:用原始字符串r''包裹Windows路径,避免反斜杠被解析为转义字符
  2. 优化校验逻辑:改用try-except捕获XML解析错误,原代码的if not ET.parse()写法不符合异常处理规范
  3. 完成列表汇总:在遍历SOURCEFIELD的循环中,把每个标签的attrib字典加入sourcefield_attrs列表
  4. 统一输出:最后打印整个汇总列表,得到预期格式

输出结果

[{'BUSINESSNAME': '', 'DATATYPE': 'varchar', 'DESCRIPTION': '', 'FIELDNUMBER': '1'},
 {'BUSINESSNAME': '', 'DATATYPE': 'numeric', 'DESCRIPTION': '', 'FIELDNUMBER': '2'},
 {'BUSINESSNAME': '', 'DATATYPE': 'timestamp', 'DESCRIPTION': '', 'FIELDNUMBER': '3'}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:25:24