Возможное решение, использующее ElementTree, с выводом, довольно форматированным для примера:
>>> import xml.etree.ElementTree as etree
>>> root = etree.parse(document).getroot()
>>> docs = []
>>> for doc in root.findall('doc'):
... fields = {}
... for field in doc:
... fields[field.attrib['name']] = field.text
... docs.append(fields)
...
>>> print docs
[{'genLongitude': '5.879745',
'genLatitude': '45.639968',
'carOfficeHoursEnd': '2000-01-01T09:00:00.000Z'},
{'genLongitude': '6.879745',
'genLatitude': '46.639968',
'carOfficeHoursEnd': '2000-01-01T09:00:00.000Z'}]
Показанный вами XML-документ не предоставляет способа отличить каждый doc
от другого, поэтому я быутверждаю, что список - это лучшая структура для сбора каждого словаря.
Действительно, если вы хотите вставить все doc
данные в другой словарь, конечно, вы можете, но вам нужно выбрать подходящий ключ для этого.толковый словарь.Например, используя id
Python для каждого объекта, вы можете написать:
>>> docs = {}
>>> for doc in root.findall('doc'):
... fields = {}
... for field in doc:
... fields[field.attrib['name']] = field.text
... docs[id(fields)] = fields
...
>>> print docs
{3076930796L: {'genLongitude': '6.879745',
'genLatitude': '46.639968',
'carOfficeHoursEnd': '2000-01-01T09:00:00.000Z'},
3076905540L: {'genLongitude': '5.879745',
'genLatitude': '45.639968',
'carOfficeHoursEnd': '2000-01-01T09:00:00.000Z'}}
Этот пример предназначен просто для того, чтобы вы увидели, как использовать внешний словарь.Если вы решите пойти по этому пути, я бы посоветовал вам найти значимый и пригодный для использования ключ вместо адреса памяти объекта, возвращаемого id
, который может меняться от запуска к запуску.