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
XML: DOM, SAX oder XPATH
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.
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.
- 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
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.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.