[geloest] Prettyprinting XML mit ElementTree

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.
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

[geloest] Prettyprinting XML mit ElementTree

Beitragvon shakebox » 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:


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
Zuletzt geändert von shakebox am Montag 14. April 2008, 12:41, insgesamt 1-mal geändert.
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

Beitragvon shakebox » Montag 14. April 2008, 12:14

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!?
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

Beitragvon shakebox » Montag 14. April 2008, 12:40

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

Wer ist online?

Mitglieder in diesem Forum: __deets__, Google [Bot], schurmak, snafu