Mehrere Einträge auslesen aus XML

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mungo1981
User
Beiträge: 131
Registriert: Montag 27. August 2012, 19:05

Liebe Community,
Ich steh gerade wie Ochs vorm Berg. :K
Ich habe eine XML Datei

Code: Alles auswählen

<Farben>
	<Farbe>Rot</Farbe>
	<Farbe>Blau</Farbe>
</Farben>
wie kann ich hier die Werte unter Farbe,
hier also Rot und Blau auslesen

Jeder Tip hilft

Mungo1981
BlackJack

In der Standardbibliothek gibt es `xml.etree.ElementTree` für das verarbeiten von XML.
Mungo1981
User
Beiträge: 131
Registriert: Montag 27. August 2012, 19:05

:oops: Ist klarr
aber ein findtext liefert nur einen Wert zurück hier Rot
und ein findall liefert nur ein Objekt und kein String zurück :K
BlackJack

@Mungo1981: Wie so oft ist das keine Frage *einer* Methode sondern der richtigen Kombination von Methoden und Kontrollstrukturen. Du musst die <Farbe>-Elemente finden (`findall()`) und dann von jedem das `text`-Attribut abfragen. Bei `lxml.etree` könnte man mit *einem* XPath-Ausdruck gleich die Texte abfragen, allerdings müsste man dafür `lxml` installieren und sich mit XPath auseinandersetzen.
Mungo1981
User
Beiträge: 131
Registriert: Montag 27. August 2012, 19:05

Blöde Frage aber,
was soll ich nun machen
Verstehe nicht ganz.
Mit Findall alle Farben suchen.
Ok dass krieg ich hin
Aber wie komme ich an das Text Atribut heran.
BlackJack

@Mungo1981: Wie man in Python halt auf Attribute von Objekten zugreift: mit dem Punktoperator. Links davon steht ein Ausdruck der zu einem Objekt ausgewertet wird und rechts davon der Attributname. So ``obj.attribute_name`` beispielsweise. Hier heisst das Attribut `text`.

Code: Alles auswählen

In [18]: color_node
Out[18]: <Element 'Farbe' at 0xae7546c>

In [19]: color_node.text
Out[19]: 'Rot'
Mungo1981
User
Beiträge: 131
Registriert: Montag 27. August 2012, 19:05

Vielen Dank,
Es hat jetzt sehr gut funktioniert
Antworten