我解析一个xml数据集,并使用python中xml.etree
模块将其保存到一个MySQL数据库进行进一步的处理。有一个节点具有可变数量的子节点。例如,让我们说:Python:如何使用动态数量的子节点解析XML?
<cars>
<car type="A" value=35 />
<car type="B" value=42 />
<car type="C" value=55 />
<car type="D" value=23 />
</cars>
所以,在这个例子中car
节点的数量将每个文档中有所不同。我知道最多可以有A - H
,所以我在我的数据库中创建了car_A到car_H的列。我通常做一个循环像这样得到value
属性为每辆车:
for car in root.findall("cars/car"):
if car.get("type") == "A":
car_A = car.get("value")
elif car.get("type") == "B":
car_B = car.get("value")
...
但是,这看起来有点低效,我还需要使汽车类型不存在,如汽车type=E
为空。我如何做到这一点,而不使用所有的陈述,并使其更具概括性和有效性?可能还有其他类型的子节点更多的节点,因此手动编写if...elif
似乎不可行。