2013-04-08 6 views
2

Я пытаюсь выяснить, как получить значения атрибутов XML, используя cElementTree iterparse в Python (2.7). Мой XML-то вроде этого:Получение значений атрибутов XML с помощью Python iterparse

<root> 
    <record attr1="a" attr2="b" attr3="c" ... /> 
    <record attr1="x" attr2="y" attr3="z" ... /> 
    ... 
</root> 

Мой код-то вроде этого:

context = ET.iterparse(sys.stdin, events=('start','end')) 
context = iter(context) 
event, root = context.next() 

for event, elem in context: 
    if event == 'end' and elem.tag == 'record': 
     # get the attributes!! 
    elem.clear() 
    root.clear() 

Я имею дело с большими данными из стандартного ввода. Мне не повезло с этим. Может ли кто-нибудь рассказать, как (оптимально?) Сделать это?

ответ

3

К сожалению, глядя мне в лицо, вроде: http://docs.python.org/2/library/xml.etree.elementtree.html#element-objects

В итоге:

elem.get('attr_name', default_value) 

или,

for name, value in elem.items(): 

или,

elem.attrib() - dictionary 

I Should также добавьте, что это было необходимо сары изменить код размещен в вопросе:

... 
if event == 'start' and elem.tag == 'record': 
... 
+0

правильный способ извлечения словаря путем вызова: elem.attrib Открытые скобки не нужны – ealbert