[geloest] Prettyprinting XML mit ElementTree
Verfasst: Montag 14. April 2008, 12:02
Hi!
Ich versuche mich gerade an der Erstellung von XML-Files. Das klappt mit dem ElementTree-Package ja auch wunderbar einfach. Leider hat das Paket aber keine eingebaute prettyprint-Funktion, um das XML-File lesbarer zu machen.
Auf der Website von ElementTree hab ich eine kleine ident-Funktion gefunden (http://effbot.org/zone/element-lib.htm#prettyprint), die das eigentlich recht gut erledigt. Sie hat nur leider einen kleinen Schoenheitsfehler: sie vergisst, zwischen "Blocks" ohne Textinhalt auf gleicher Ebene ne Leerzeile einzufuegen.
Sowas kommt dabei raus:
Problematisch sind also die Zeilen 3, 9 und 13. Ich haette aber natuerlich gerne etwas das so aussieht:
Kennt jemand das Problem und im Idealfall sogar ne Loesung dafuer? lxml hat zwar ne prettyprint-Funktion eingebaut, ich wuerde aber ungern lxml dafuer verwenden muessen, da es auf mehreren Rechnern und Plattformen laufen soll. Sonst muss ich ueberall deswegen lxml installieren und aktuell halten.
Danke fuer jegliche Ideen und Anregungen!
Gruss, Shakebox
Ich versuche mich gerade an der Erstellung von XML-Files. Das klappt mit dem ElementTree-Package ja auch wunderbar einfach. Leider hat das Paket aber keine eingebaute prettyprint-Funktion, um das XML-File lesbarer zu machen.
Auf der Website von ElementTree hab ich eine kleine ident-Funktion gefunden (http://effbot.org/zone/element-lib.htm#prettyprint), die das eigentlich recht gut erledigt. Sie hat nur leider einen kleinen Schoenheitsfehler: sie vergisst, zwischen "Blocks" ohne Textinhalt auf gleicher Ebene ne Leerzeile einzufuegen.
Sowas kommt dabei raus:
Code: Alles auswählen
<general>
<tag1>1</tag1>
</general><timeline>
<tag2>2</tag2>
<track>
<shot>
<tag3>3</tag3>
...
</shot><shot>
<tag4>4</tag4>
...
</shot>
</track><track>
...
</track>
</timeline>
Code: Alles auswählen
<general>
<tag1>1</tag1>
</general>
<timeline>
<tag2>2</tag2>
<track>
<shot>
<tag3>3</tag3>
...
</shot>
<shot>
<tag4>4</tag4>
...
</shot>
</track>
<track>
...
</track>
</timeline>
Danke fuer jegliche Ideen und Anregungen!
Gruss, Shakebox