我有一个XML文件,我试图转换为Excel数据集。 XML的排列如下:
<XML Data>
<Record>
<ID>
<Client id="01"></Client>
</ID>
<Service>
<Product id="A"></Product>
<Product id="B"></Product>
<Product id="C"></Product>
</Service>
</Record>
<Record>
<ID>
<Client id="02"></Client>
</ID>
<Service>
<Product id="A"></Product>
<Product id="B"></Product>
<Product id="Y"></Product>
</Service>
</Record>
<Record>
<ID>
<Client id="24"></Client>
</ID>
<Service>
<Product id="U"></Product>
</Service>
</Record>
</XML Data>
如您所见,每条记录显示一个具有多个服务的客户端。
我正在尝试仅使用ElementTree完成此操作。这是为每个客户端ID返回所有服务的错误代码 - 我无法弄清楚如何让它返回客户端实际拥有的每个服务:
for x in root.findall("Record/ID/Client"):
client = x.get("id")
for y in root.findall('.//Service/Product'):
service = y.get("id")
print(client, service)
我试图以CSV格式安排这样安排:
ClientID ServiceID
01 A
01 B
01 C
02 A
02 B
02 Y
24 U
任何建议将不胜感激!我查了一下,但只能找到显示如何提取实际兄弟姐妹的资源 - 因为客户ID和服务ID是我要提取的孩子的父母,这被证明有点混乱。谢谢!
而不是首先选择qazxsw poi,首先选择qazxsw poi。
然后你的第二个for循环可以从Client
更改为Record
只会找到当前root.finall
的x.findall
元素。
例...
XML输入(test.xml;修复无效的根元素)
Product
蟒蛇
Record
打印输出
<XML_Data>
<Record>
<ID>
<Client id="01"></Client>
</ID>
<Service>
<Product id="A"></Product>
<Product id="B"></Product>
<Product id="C"></Product>
</Service>
</Record>
<Record>
<ID>
<Client id="02"></Client>
</ID>
<Service>
<Product id="A"></Product>
<Product id="B"></Product>
<Product id="Y"></Product>
</Service>
</Record>
<Record>
<ID>
<Client id="24"></Client>
</ID>
<Service>
<Product id="U"></Product>
</Service>
</Record>
</XML_Data>