我解析一個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
似乎不可行。