Seite 1 von 1
Mehrere Einträge auslesen aus XML
Verfasst: Freitag 20. Januar 2017, 18:15
von Mungo1981
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
Re: Mehrere Einträge auslesen aus XML
Verfasst: Freitag 20. Januar 2017, 19:57
von BlackJack
In der Standardbibliothek gibt es `xml.etree.ElementTree` für das verarbeiten von XML.
Re: Mehrere Einträge auslesen aus XML
Verfasst: Freitag 20. Januar 2017, 20:05
von Mungo1981

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
Re: Mehrere Einträge auslesen aus XML
Verfasst: Freitag 20. Januar 2017, 21:36
von 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.
Re: Mehrere Einträge auslesen aus XML
Verfasst: Freitag 20. Januar 2017, 21:50
von Mungo1981
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.
Re: Mehrere Einträge auslesen aus XML
Verfasst: Freitag 20. Januar 2017, 22:37
von 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'
Re: Mehrere Einträge auslesen aus XML
Verfasst: Samstag 21. Januar 2017, 14:40
von Mungo1981
Vielen Dank,
Es hat jetzt sehr gut funktioniert