XML: DOM, SAX oder XPATH

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
dh233
User
Beiträge: 37
Registriert: Samstag 8. Juli 2006, 08:26

Hallo!

Ich hab mich bezüglich XML in Python ein bißchen eingelesen. Nun stellt sich allerdings die Frage wann man DOM bzw. SAX oder XPath verwenden soll.

Laut "Python & XML" von O#Reilly ist SAX bei großen Dateien schneller, da es nicht im Hauptspeicher liegt, DOM bei kleinen aber eben deshalb viel schneller.

Wie schaut das aber bei XPath aus? Ich tendiere nämlich eher zu XPath, möchte aber vorher wissen, ob es auch halbwegs performant - sprich schnell - ist.

Danke, lG


dh233
BlackJack

XPath kann man meiner Meinung nach nicht so direkt mit DOM oder SAX vergleichen. DOM und SAX sind Schnittstellen wie man XML parst und dann darauf zugreift. XPath setzt irgendwie schon eine Repräsentation der Daten im Speicher voraus und dient der Beschreibung von Wegen/Elementen in einem XML-Dokument.

Ansonsten musst Du einfach mal ausprobieren was schneller ist, sowohl in der Entwicklung als auch im Programmablauf, und welche API besser auf Deine Problemstellung passt.

SAX bietet sich zum Beispiel bei relativ flacher Struktur der XML-Daten an, wenn man die Daten sequentiell bearbeiten muss. Also zum Beispiel bei Datensätzen oder Log-Einträgen in XML-Formaten.

DOM ist besser geeignet, wenn die Struktur unregelmässiger und verschachtelt ist und man sich "frei" innerhalb der Knoten bewegen können muss. Dann kann man Knoten auch per XPath addressieren.

Viel hübscher und pythonischer ist natürlich die ElementTree API.
dh233
User
Beiträge: 37
Registriert: Samstag 8. Juli 2006, 08:26

Danke für die Antwort.

ElementTree hab ich noch gar nicht gesehen, werds mir aber genauer anschauen. Vor allem ist die API hilfreich beim Erstellen von neuen XML-Dokumenten.

mfg


dh233
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi dh233!

ElementTree hat noch einen Vorteil. So wie es aussieht, wird ET ab Python 2.5 mit dabei sein.

http://docs.python.org/dev/lib/module-elementtree.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten