Wie entferne ich Elemente aus XML mit Python

Ich habe mit XML und Python stecken. Die Aufgabe ist einfach, aber ich konnte sie noch nicht lösen und habe so viel Zeit darauf verwendet. Ich kam hierher, um einen Rat zu bekommen, wie man es mit ein paar Zeilen löst.

Vielen Dank für jede Hilfe beim Überqueren des Baumes. Am Ende hatte ich immer zu viele oder zu wenige Elemente. Elemente können unbegrenzt verschachtelt werden. Das angegebene Beispiel ist nur ein Beispiel. Ich werde jede Lösung akzeptieren, nicht wählerisch in Bezug auf dom, minidom, sax, was auch immer ..

Ich habe eine XML-Datei ähnlich der folgenden:

<root>
    <elm>
        <elm>Common content</elm>

        <elm xmlns="http://example.org/ns">
            <elm lang="en">Content EN</elm>
            <elm lang="cs">žluťoučký koníček</elm>
        </elm>

        <elm xml:id="abc123">Common content</elm>

        <elm lang="en">Content EN</elm>
        <elm lang="cs">Content CS</elm>

        <elm lang="en">
            <elm>Content EN</elm>
            <elm>Content EN</elm>
        </elm>

        <elm lang="cs">
            <elm>Content CS</elm>
            <elm>Content CS</elm>
        </elm>
    </elm>
</root>

Was ich brauche - analysiere das XML und schreibe eine neue Datei. Die neue Datei sollte alle Elemente für die angegebene Sprache und Elemente ohne @ enthaltelang attribute.

Für "cs" sollte die Ausgabedatei folgendes enthalten:

<root>
    <elm>
        <elm>Common content</elm>

        <elm xmlns="http://example.org/ns">
            <elm lang="cs">žluťoučký koníček</elm>
        </elm>

        <elm xml:id="abc123">Common content</elm>

        <elm lang="cs">Content CS</elm>

        <elm lang="cs">
            <elm>Content CS</elm>
            <elm>Content CS</elm>
        </elm>
    </elm>
</root>

Wenn Sie es schaffen, das @ wegzulasslang -Attribut in der neuen Datei, noch besser. Aber es ist nicht so wichtig.

UPDATE1: Unicode-Zeichen und Namespace-Attribut hinzugefügt.

UPDATE2: Bei Verwendung von Python 2.5 werden Standardbibliotheken bevorzugt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage