如何将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)
修改说明
- 修复路径问题:用原始字符串
r''包裹Windows路径,避免反斜杠被解析为转义字符 - 优化校验逻辑:改用
try-except捕获XML解析错误,原代码的if not ET.parse()写法不符合异常处理规范 - 完成列表汇总:在遍历
SOURCEFIELD的循环中,把每个标签的attrib字典加入sourcefield_attrs列表 - 统一输出:最后打印整个汇总列表,得到预期格式
输出结果
[{'BUSINESSNAME': '', 'DATATYPE': 'varchar', 'DESCRIPTION': '', 'FIELDNUMBER': '1'}, {'BUSINESSNAME': '', 'DATATYPE': 'numeric', 'DESCRIPTION': '', 'FIELDNUMBER': '2'}, {'BUSINESSNAME': '', 'DATATYPE': 'timestamp', 'DESCRIPTION': '', 'FIELDNUMBER': '3'}]
内容的提问来源于stack exchange,提问作者Debashish Das
相关产品推荐
相关产品推荐

