繁体   English   中英

使用动态 xml 结构将 xml 文件解析为 csv

[英]parsing xml file to csv with dynamic xml structure

我一直在学习 python,目前正在解析 XML 文件并转换为 CSV 文件。 我能够迭代 XML 文件,但不需要确定如何存储列值,尤其是当 XML 值不一致时。 XML 文件位置

Output 预期: CSV 文件 output

到目前为止,我有基本的 python 代码,需要帮助我可以根据正确的 csv 列中的数据来存储和打印值:

import xml.etree.cElementTree as ET
file_path = "Candidate.xml"
tree = ET.parse('Candidate.xml')
root = tree.getroot()
print(root.tag, root.attrib)
for child in root:
    print(child.tag, child.attrib)

这会有点复杂但可行:

#first collect your data:
data = []
rows = root.findall('.//rows')
for row in rows:
    items = [row.attrib['id'],
            row.find('./column[@name="Organization"]'),
            row.find('./column[@name="Location"]'),
            row.find('./column[@name="Candidate.Address"]/Address1[@name="Candidate.ResidentialAddress"]'),
            row.find('./column[@name="Candidate.Address"]/Address1[@name="Candidate.OfficeAddress"]'),
            row.find('./column[@name="Candidate.GivenName"]'),
            row.find('./column[@name="Candidate.Phone"]')]
    
    #insert the data into a line
    line = []
    for item in items:        
        if item is None:
            line.append("")
        else:
            try:
                line.append(item.text.strip())
            except:
                line.append(item.strip())
    data.append(line)

#finally, prepare your csv:
headers = ["id","Organization","Location","ResidentialAddress","OfficeAddress",".GivenName","Phone"]
with open('candidates.csv', 'w', encoding='UTF8', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    writer.writerows(data)

output 应该是您正在寻找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM