Seite 1 von 1

[geloest] Prettyprinting XML mit ElementTree

Verfasst: Montag 14. April 2008, 12:02
von shakebox
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:

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>
Problematisch sind also die Zeilen 3, 9 und 13. Ich haette aber natuerlich gerne etwas das so aussieht:

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>
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

Verfasst: Montag 14. April 2008, 12:14
von shakebox
oh, hab selbst ne Loesung gefunden. Gerold hat in diesem Thread http://www.python-forum.de/topic-11945.html eine minimal erweiterte Version der indent-Funktion notiert. Dass die unterschiedlich von der originalen ist hab ich bei meiner ersten Suche wohl uebersehen.

@Gerold: evtl. magst Du da Deine Version an den Entwickler von ElementTree mailen oder so, damit er das evtl. auf seiner Homepage ausbessert? Waere ja sinnvoll wenn da gleich ne passende Version steht!?

Verfasst: Montag 14. April 2008, 12:40
von shakebox
ah, Mist, man sollte vielleicht Seiten doch immer erst ganz lesen :) Auf der Website von ElementTree steht das ja schon von jemandem als Kommentar ganz unten. Hatte ich uebersehen.

Ich gelobe Besserung im "Vorher-Gruendlich-Lesen"!