Я разбираю XML-набор данных и сохраняю его в базе данных mysql для дальнейшей обработки с использованием модуля xml.etree
в python. Существует один узел с переменным числом дочерних узлов. Например, позволяет сказать: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
и сделать их более обобщаемыми и эффективными? Могут быть и другие такие узлы с гораздо большим количеством дочерних узлов, поэтому вручную писать if...elif
не представляется возможным.