2013-01-14 8 views
8

Ich habe ein XML <root> Element mit mehreren Attributen. Ich habe das ElementTree Paket verwendet.Erhalten Sie Attributnamen und Werte von ElementTree

Nachdem ich einen Baum aus einer XML-Datei geparst habe, bekomme ich den Dokumentenstamm, aber ich möchte das angeforderte Attribut oder sogar die gesamte Liste der Attribute erhalten.

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

Wie kann Ich nehme alle Namen und Werte für ein <root> Element mit ElementTree Attribut?

Antwort

13

Jedes Element hat ein Attribut .attrib das ist ein Wörterbuch; verwenden Sie einfach es mapping methods ist es zu fragen, für seine Schlüssel oder Werte:

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

oder

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

oder dict auf einem Python .values() oder eine der anderen Methoden zur Verfügung verwenden.

Um ein individuelles Attribut zu erhalten, verwenden Sie die Standard-subscription syntax:

print root.attrib['a'] 
4

Das attrib Attribut eines ElementTree Element (wie die Wurzel von getroot zurückgegeben) ein Wörterbuch ist. So können Sie zum Beispiel:

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

die folgende Ausgabe, für Ihr Beispiel

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

Einige schöne Schleife Sie es verwenden können, werden für jedes Element des XmlObject bekommen es ist Tag, Text und Attribut es wird für 2 Ebenen XML arbeiten, es ist nicht der beste Weg zu durchlaufen, aber es kann für einfache Dinge nützlich sein ...

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