Python XML

druckgott

Erfahrenes Mitglied
Hallo, ich habe ein Pyton script das einen XML File liest:
XML:
<dialog>
    <testa name="racing_osd_win" w="100%" h="100%" bgcolor="#00000000" alignment="center" show="false">
        <testba name="custom_osd_win" dx="0px" dy="0px" w="1440px" h="40px" alignment="top-left" show="false"
            focusable="false" bgcolor="#00000000">
            <hbox>
                <gap size="150px" />
                <image name="fdsaf" size="48px" image.name="custom_osd_ic.png" />
                <gap size="12px" />
                <label name="wwer" size="90px" text="N/A" color="#fffffff2" font.size="28" alignment="center" />
                <gap size="20px" />
                <label name="nvcx" size="100px" text="N/A" color="#fffffff2" font.size="28" alignment="center" />
                <gap size= "100px" />
                <label name="wqr" size="300px" text="CRAFT_NAME" color="#ffffffff" font.size="28" alignment="left" />
                <gap size="20px" />
                <label name="bc" size="100px" text="00&apos; 00&quot;" color="#fffffff2" font.size="28" alignment="center" />
                <gap size="20px" />
                <label name="234" size="100px" text="00&apos; 00&quot;" color="#fffffff2" font.size="28" alignment="center" />
                <gap size="20px" />
                <label name="fdsa" size="250px" text="" color="#fffffff2" font.size="28" alignment="center" />
                <gap />
            </hbox>
        </childwindow>
</dialog>

Jetzt will ich die hbox auslesen und parallel immer gap/image/label lesen weil ich da eine gui erzeugen will
Meine Schleife läuft über:
Python:
                for hbox_level1 in type_tag.findall('hbox'):

                    for sub_hbox_level1 in hbox_level1.findall('(gap|image|label)'):
Ich will sozusagen parallel über gap/image/label loopen um etwas nacheinander aufzubauen.
Leider funktioniert | (or) nicht er findet gar nichts.
Wenn ich:
Python:
for sub_hbox_level1 in hbox_level1.findall('gap') + hbox_level1.findall('image') + hbox_level1.findall('label'):
verwende findet er zwar alle, aber in der Reihenfolge erst alle gap, dann alle image dann alle label.
ich will das aber der reihe nach bekommen.
Grüße
druckgott
 

druckgott

Erfahrenes Mitglied
Das mach ich natürlich, das war ja auch nur ein Ausschnitt habe ne Lösung gefunden
from lxml import etree as ET

Da kann man dann im Gegensatz zum not. Alen XML parser ein oder einbauen
for sub_hbox_level1 in hbox_level1.xpath("gap|image|label"):