Bearbeiten von XML als Wörterbuch in Python?

8

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?

    
Jon Clegg 24.09.2008, 14:44
quelle

8 Antworten

8

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%     
Chris Lawlor 24.09.2008, 15:56
quelle
19

Damit bekommst du ein dict minus Attribute ... weiß nicht, ob das für irgendjemanden nützlich ist. Ich war selbst auf der Suche nach einem xml-to-dict-Lösung, als ich auf diese Idee kam.

%Vor%

Dies: Ссылка

%Vor%

Würde gleich sein:

%Vor%     
user247686 20.02.2010 21:07
quelle
11

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.

    
Torsten Marek 24.09.2008 14:58
quelle
4

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: -)

    
Mark 22.05.2011 13:06
quelle
1

Diese Zeile hinzufügen

%Vor%

Im Code user247686 können Sie auch Knotenattribute haben.

In diesem Beitrag Ссылка

gefunden

Beispiel:

%Vor%

Anruf als

%Vor%     
Robbo 15.05.2012 11:37
quelle
0

Haben Sie das versucht?

%Vor%     
S.Lott 24.09.2008 15:05
quelle
0

direktster Weg zu mir:

%Vor%     
Loooo 30.03.2010 12:57
quelle
0

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.

    
nealmcb 22.03.2012 01:31
quelle

Tags und Links