2013-01-14 11 views
8

Mam element XML <root> z kilkoma atrybutami. Korzystam z pakietu ElementTree.Uzyskaj nazwy atrybutów i wartości z ElementTree

Po tym, jak przeanalizowałem drzewo z pliku xml, otrzymuję katalog główny, ale chcę uzyskać żądany atrybut, a nawet całą listę atrybutów.

<root a="1" b="2" c="3"> 
    </blablabla> 
</root> 

Jak mogę pobrać wszystkie nazwy atrybutów i wartości dla <root> elementu z ElementTree?

Odpowiedz

13

Każdy atrybut Element ma atrybut .attrib, który jest słownikiem; wystarczy użyć to mapping methods zapytać go To kluczy lub wartości:

for name, value in root.attrib.items(): 
    print '{0}="{1}"'.format(name, value) 

lub

for name in root.attrib: 
    print '{0}="{1}"'.format(name, root.attrib[name]) 

lub użyj .values() lub którykolwiek z pozostałych metod dostępnych na pytona dict.

Aby uzyskać indywidualne właściwości, wykorzystania średnia subscription syntax:

print root.attrib['a'] 
4

atrybut elementu ElementTree attrib (takich jak korzeń, zwracanej przez getroot) jest słownik. Więc można zrobić, na przykład:

from xml.etree import ElementTree 
tree = ElementTree.parse('test.xml') 
root = tree.getroot() 
print root.attrib 

który wyświetli na swoim przykładzie

{'a': '1', 'b': '2', 'c': '3'} 
1

Niektóre ładne pętli można go używać będzie dla każdego elementu XMLObject to tag, tekst i atrybut będzie działać na dwóch poziomach XML, to nie jest najlepszy sposób na iterację, ale może być przydatny do prostych rzeczy ...

for headTag in xmlObject.getchildren(): 
    print headTag.tag, headTag.text, headTag.attrib 
    for bodyTag in headTag.getchildren(): 
     print "\t", bodyTag.tag, bodyTag.text, bodyTag.attrib 
Powiązane problemy