Python und XML: lxml

May 2005
19

XML war und ist in Python ein Rough Spot (neben WebApplication-Frameworks). Nichts mit “There’s Only One Way To Do It”. Die XML-Komponenten der Standard-Library sind eher ein Witz und man kann deshalb aus vielen alternativen Implementierungen auswählen. Da hat man dann meistens die Wahl zwischen Pythonic aber langsam/featurearm und seltsamer API, dafür aber schnell und mächtig. Dazu kamen seltsame BenchmarksFights in der Community.

Auf der einen Seite hat mir libxml2 gefallen, hauptsächlich wegen der Empfehlung von Mark Pilgrim, der muss es ja wissen :) Auf der anderen — pythonic — Seite hat es mir ElementTree sehr angetan. Nachdem ich das benutzt hatte wollte ich nie mehr Java-Code schreiben der mit XML zu tun hat. ElementTree kann aber kein XSLT und nur eingeschränkt XPath und so musste ich halt mehrere Libraries verwenden, was mich doch gestört hat.

Dank Martijn Faassen hat sich das jetzt aber geändert. Denn der hat einen extrem kühlen Wrapper geschrieben, mit dem man libxml2/libxslt über die ElementTree-API ansprechen kann. lxml ist zwar teilweise noch etwas buggy (aufgrund des Memory-Managements von libxml), aber gut benutzbar und ein schöne und praktikable Lösung um in Python mit XML zu arbeiten.

Ich konnte den mit ElementTree geschriebenen Teil eins-zu-eins mit lxml weiter benutzen und hab jetzt eine Abhängigkeit weniger in meinem Projekt.

Kommentare:

Tut mir leid, es sind keine Kommentare mehr möglich.