Modul zum Erstellen einer Python-Objektdarstellung aus XML [geschlossen]

8

Ich suche nach einem einfach zu handhabenden nativen Python-Modul, um eine Python-Objektdarstellung aus XML zu erstellen.

Ich habe mehrere Module über Google gefunden (eines davon ist XMLObject ), wollte aber nicht alles ausprobieren von ihnen.

Was denkst du, ist der beste Weg, solche Dinge zu tun?

BEARBEITEN: Ich habe vergessen zu erwähnen, dass das XML, das ich gerne lesen würde, nicht von mir generiert wird. Es ist eine existierende XML-Datei in einer Struktur, auf die ich keine Kontrolle habe.

    
Martin 20.11.2008, 20:07
quelle

7 Antworten

12

Sie sagen, dass Sie eine -Objekt -Darstellung wünschen, die ich so interpretieren würde, dass Knoten zu Objekten werden und die Attribute und Kinder des Knotens als Attribute des Objekts dargestellt werden (möglicherweise nach einem Schema) ). Das ist, was XMLObject tut, glaube ich.

Es gibt einige Pakete, die ich kenne. 4Suite enthält einige Tools, um dies zu tun, und ich glaube, Amara implementiert dies speziell (auf 4Suite aufgebaut). Sie können auch lxml.objectify verwenden, das von Amara und gnosis.xml.objectify .

Natürlich ist eine dritte Option, wenn Sie eine konkrete Darstellung der XML-Datei (mit ElementTree oder lxml) verwenden, können Sie ein eigenes benutzerdefiniertes Modell erstellen. lxml.html ist ein Beispiel dafür und erweitert die Basisschnittstelle von lxml um einige HTML-spezifische Funktionen.

    
ianb 20.11.2008, 22:40
quelle
5

Ich unterbiete den Vorschlag von xml.etree.ElementTree, hauptsächlich weil er jetzt in der stdlib ist. Es gibt auch eine schnellere Implementierung, xml.etree.cElementTree, die ebenfalls verfügbar ist.

Wenn Sie wirklich Leistung benötigen, würde ich lxml vorschlagen

Ссылка

    
JimB 20.11.2008 20:22
quelle
3

Ich habe am einfachsten gehört ElementTree , obwohl ich selten mit XML und mir arbeite kann nichts aus Erfahrung sagen.

    
Milen A. Radev 20.11.2008 20:12
quelle
3

Es gibt auch die ausgezeichnete 3rd-Party-Bibliothek pyxser für Python.

  

pyxser steht für Python XML   Serialisierung und ist ein Python-Objekt   zu XML-Serializer und Deserializer. Im   Mit anderen Worten, es kann ein Python konvertieren   Objekt in XML und auch, das konvertieren   XML zurück in das ursprüngliche Python   Objekt.

    
Kenny Meyer 02.09.2010 23:03
quelle
1

Ich verwende (und mag) PyRXP, das ein Tupel erstellt, das aus dem XML-Dokument erstellt wurde.

Das Hauptproblem mit einem geraden XML - & gt; Python-Objekt-Struktur ist, dass es kein Python-Analog für eine attributierte Liste gibt - das heißt, eine Liste mit Elementen, die zufällig auch Attribute haben. Wenn Sie möchten, ist es gleichzeitig eine Liste und ein Wörterbuch.

Ich parse das Ergebnis von PyRXP und erstelle die Liste / das Wörterbuch abhängig von der Struktur - das XML, mit dem ich es zu tun habe, ist entweder Listen- oder Attribut-basiert, niemals beides. (Ich verwende Daten von einer bekannten Quelle).

    
Matthew Schinckel 20.11.2008 22:09
quelle
1

Python hat Pickle- und cPickle-Module für die Python-Objektserialisierung. Beide Module bieten Funktionen zum Serialisieren / Deserialisieren der Python-Objekthierarchie für die Konvertierung in / aus einem Byte-Stream:

Folgendes bietet eine ähnliche Schnittstelle: pickle (), unpickle () für die Serialisierung von / nach XML

Sergey Golovchenko 20.11.2008 20:43
quelle
0

Ich hatte viel Glück mit Wai Yip Tungs xml2obj-Funktion hier:

Ссылка

Es sind ~ 84 Zeilen Code. Es ist native und reine Python; Verwenden von Bibliotheken xml.sax und re (regulärer Ausdruck). Sie übergeben es einfach XML und erhalten Ihr Objekt zurück.

    
dalenewman 15.08.2011 18:34
quelle

Tags und Links