【发布时间】:2026-01-16 03:40:01
【问题描述】:
这是一个脚本中的一个 sn-p,我正在尝试将其组合在一起以使我的生活更轻松。我有一堆来自不同 API 源的 XML 文件。它们中有不同的项目和不同数量的字段。它们的共同点是一个共同的字段,例如“clientid”。
我想要做的是最终得到一个 CSV,其中包含所有 XML 的组合标头及其相应数据。所以我需要能够确保来自 12345 的“clientid”的所有信息都添加到“itemid”拉取中同名的客户端 id 的行尾
项目数据:
<item>
<id>99899</id>
<client-id>12345</client-id>
部分脚本:
def parseXML():
### Parse XML and convert to CSV ###
#Get XML Source #
tree = ET.fromstring(getdata)
# open a file for writing
xmlTest01 = open('xmlTest01.csv', 'w')
# create the csv writer object
csvwriter = csv.writer(xmlTest01)
item_head = []
count = 0
for member in tree.findall('item'):
item = []
if count == 0:
id = member.find('id').tag
item_head.append(id)
clientid = member.find('client-id').tag
item_head.append(clientid)
id = member.find('id').text
item.append(id)
clientid = member.find('client-id').text
item.append(clientid)
csvwriter.writerow(item)
xmlTest01.close()
下一组数据里面有这个:
<client>
<id>12345</id>
<name>Clients name</name>
<current type="boolean">true</current>
<status>good</status>
所以我想检查上一组数据中的行是否有相同的 clientid,然后将名称、当前和状态添加到该行的末尾。
关于最佳方式的任何想法?我有大约 5-7 个此类文件要合并。在将文件转换为 CSV 之前,我是否应该先尝试合并文件?如果他们都有相似的内容,这可能没问题,但他们没有。
结合两个 xml 文件的值的所需输出:
id,clientid,name,current,status
99899,12345,Clients name,true,good
【问题讨论】:
-
你能发布一个更完整的输入 XML(带有根标签)而不是一个reproducible example 的 sn-ps 吗?所需的 csv 输出结果可能会有所帮助并说明您的文字描述。
-
@Parfait 好的。我将尝试尽快简化它,并使用更简化的工作示例更新问题。我无法按原样发布的真实数据。所以我需要全部修改,并且一些 xml 文件非常大。第一个的根标签只是
而第二个是 然后它只是我放在那里的几百个不同的 id 和字段内容。我正在为此提取实时数据,因此我需要制作一个示例文件以在此处发布一个使用它们的工作脚本。它现在一次只能使用一个 xml。但我不知道如何结合