Ich versuche, benutzerdefinierte XML-Dateien aus einer XML-Vorlagedatei in Python zu generieren.
Ich möchte konzeptionell das Template xml einlesen, einige Elemente entfernen, einige Textattribute ändern und das neue xml in eine Datei schreiben. Ich wollte, dass es so etwas funktioniert:
%Vor%Ich möchte jetzt in die Datei schreiben, aber ich sehe nicht, wie ich dazu komme ElementTree.ElementTree.write ()
%Vor%Gibt es eine Möglichkeit, dies zu tun, oder kann jemand vorschlagen, dies anders zu machen?
Für die einfache Manipulation von XML in Python mag ich die Beautiful Soup -Bibliothek. Es funktioniert in etwa so:
XML-Beispieldatei:
%Vor%Python-Code:
%Vor%Sie können die Knotennamen als Methoden verwenden:
%Vor%Es ist auch möglich, Regexes zu verwenden:
%Vor%Das Hinzufügen und Einfügen neuer Knoten ist ziemlich einfach:
%Vor%Ich bin mir nicht sicher, ob das Konvertieren des Info-Sets zu verschachtelten Diktaten einfacher ist. Mit ElementTree können Sie dies tun:
%Vor%ElementTree wurde so entworfen, dass Sie Ihre XML-Bäume nicht zuerst in Listen und Attribute konvertieren müssen, da es genau das intern verwendet.
Es wird auch als kleine Untergruppe von XPath unterstützt.
Meine Modifikation von Daniels Antwort, um ein geringfügig besseres Wörterbuch zu geben:
%Vor%namespace ist die xmlns-Zeichenfolge einschließlich geschweifter Klammern, die ElementTree allen Tags vorangestellt hat, daher habe ich sie hier gelöscht, da es einen Namespace für das gesamte Dokument gibt
Beachten Sie, dass ich auch das rohe XML angepasst habe, so dass 'leere' Tags höchstens eine '' text -Eigenschaft in der ElementTree-Darstellung erzeugen würden
%Vor%würde zum Beispiel
geben %Vor%Es ist für spezifische XML-Dateien konzipiert, die im Prinzip JSON entsprechen. Sie sollten Elementattribute wie
verarbeiten %Vor%auch
Es gibt die Möglichkeit, das Attributwörterbuch / Untertagwörterbuch ähnlich wie Wiederholungsuntersätze zusammenzuführen, obwohl das Verschachteln der Listen angemessen erscheint: -)
Diese Zeile hinzufügen
%Vor%Im Code user247686 können Sie auch Knotenattribute haben.
In diesem Beitrag Ссылка
gefundenBeispiel:
%Vor%Anruf als
%Vor%XML hat ein reiches Infoset und es bedarf einiger spezieller Tricks, um das in einem Python-Wörterbuch darzustellen. Elemente sind geordnet, Attribute unterscheiden sich von Elementkörpern usw.
Ein Projekt zur Abwicklung von Roundtrips zwischen XML- und Python-Wörterbüchern mit einigen Konfigurationsoptionen, um die Kompromisse auf unterschiedliche Weise zu lösen, ist XML-Unterstützung in Beizwerkzeugen . Version 1.3 und neuer ist erforderlich. Es ist nicht reines Python (und ist tatsächlich so konzipiert, dass C ++ / Python-Interaktion einfacher wird), aber es könnte für verschiedene Anwendungsfälle geeignet sein.
Tags und Links python xml dictionary