Re: XML-Config-Datei mit BS auch modifizieren?
Verfasst: Montag 9. November 2015, 23:20
print("Hello world!")... tja, kann das jemand überbieten?
So, jetzt genug gealbert und zurück zu den ganz wichtigen Dingen:
-> etree !!
Ich habe bisher etree nur zum erstellen von XML verwendet. Habe mit BS HTML geparsed und definierte Elemente in eine XML gejagt (siehe irgend ein anderen Noob-Thread von mir irgendwo hier).
So, wie finde ich etwas ganz speizielles mit etree:
Ich habe als Beispiel
[Codebox=xml file=Unbenannt.xml]
<stadtliste>
<stadt>
<name>München</name>
<jahr aktiv="1">2015</jahr>
</stadt>
<stadt>
<name>Stuttgart</name>
<jahr aktiv="0">2015</jahr>
</stadt>
<stadt>
<name>Frankfurt</name>
<jahr aktiv="0">2014</jahr>
<jahr aktiv="1">2015</jahr>
</stadt>
<stadt>
<name>Köln</name>
<jahr aktiv="1">2014</jahr>
<jahr aktiv="1">2015</jahr>
</stadt>
</stadtliste>
[/Codebox]
Jetzt will ich alle Parent-Nodes selektieren die im Jahr-Tag das Atribut aktiv=1 haben.
Später dann (nur zur Vorwarnung denn nach Eins kommt erst Zwei)
will ich die selektierten Nodes nochmals durchsuchen um alle aktiv=1 zu sammeln...
Ich habe es schon probiert mit:
aber python bringt nichts raus. Ohne das ich jetzt ein Atribut eines Subelements suche bekomme ich schon Ergebnisse, also die Richtung stimmt schon irgendwie...

So, jetzt genug gealbert und zurück zu den ganz wichtigen Dingen:
-> etree !!
Ich habe bisher etree nur zum erstellen von XML verwendet. Habe mit BS HTML geparsed und definierte Elemente in eine XML gejagt (siehe irgend ein anderen Noob-Thread von mir irgendwo hier).
So, wie finde ich etwas ganz speizielles mit etree:
Ich habe als Beispiel
[Codebox=xml file=Unbenannt.xml]
<stadtliste>
<stadt>
<name>München</name>
<jahr aktiv="1">2015</jahr>
</stadt>
<stadt>
<name>Stuttgart</name>
<jahr aktiv="0">2015</jahr>
</stadt>
<stadt>
<name>Frankfurt</name>
<jahr aktiv="0">2014</jahr>
<jahr aktiv="1">2015</jahr>
</stadt>
<stadt>
<name>Köln</name>
<jahr aktiv="1">2014</jahr>
<jahr aktiv="1">2015</jahr>
</stadt>
</stadtliste>
[/Codebox]
Jetzt will ich alle Parent-Nodes selektieren die im Jahr-Tag das Atribut aktiv=1 haben.
Später dann (nur zur Vorwarnung denn nach Eins kommt erst Zwei)
will ich die selektierten Nodes nochmals durchsuchen um alle aktiv=1 zu sammeln...
Ich habe es schon probiert mit:
Code: Alles auswählen
for stadt in root.findall("..//jahr[@aktiv='1']"):
print(stadt.find('name').text)