Forum: PC-Programmierung Python: Text nach xml-Tags parsen


von M. M. (maik3)


Lesenswert?

Hallo,
hier mein momentanes Sonntags-Rätsel zum mitknobeln:

ich habe hier xml-Files aus einer Quelle auf die ich keinen Einfluss 
habe.
Die Dateien werden von einem selbstgeschriebenen Python-Skript gelesen, 
geändert und abgespeichert (nutze ElementTree als xml-Lib). Läuft alles.

Leider ist das prettyprint der ursprünglichen Quelle völlig verkackt und 
die xml-Files sind zugemüllt mit whitespaces (diverse unnötige 
Linebreaks, Leerzeichen, Tabs). Die Dateien sind so kaum menschenlesbar. 
Für mein Skript kein Problem, fürs menschliche AUge durchaus. Und leider 
behält ElementTree  beim Speichern die ursprüngliche Formatierung bei, 
d.h. der Output meines Skriptes ist genause hässlich.
Da muss Abhilfe her.

Nun könnte ich relativ leicht das ganze File in einen String einlesen 
und sämtliche Linebreaks, Leerzeichen und Tabs rausfiltern. Nur: ich 
darf ja die Nutzdaten, also, die Daten zwischen zwei xml-Tags nicht 
ändern.
Wie löse ich das also elegant?
Gibts da ne kluge regex?

Die Fragestellung lautet versimplifiziert also:
Wie kann ich erkennen ob sich ein Zeichen innerhalb eines öffnenden und 
schließenden xml-Tags befindet?
In diesem Fall wäre das Zeichen Nutzdatum, muss also erhalten bleiben. 
Andernfalls kann das Zeichen gelöscht werden.

von Jan H. (j_hansen)


Lesenswert?

Möchtest du knobeln oder möchtest du das Problem lösen? Was spricht 
gegen ein erneutes Pretty Print in deinem Skript?
Ich würde da nicht selber was bauen und dann vielleicht einen 
Spezialfall übersehen wenn's das schon fertig gibt.

von Rolf M. (rmagnus)


Lesenswert?

M. M. schrieb:
> Die Fragestellung lautet versimplifiziert also:
> Wie kann ich erkennen ob sich ein Zeichen innerhalb eines öffnenden und
> schließenden xml-Tags befindet?

Alle Zeichen sind entweder Teil eines Tags oder befinden sich 
dazwischen.

von Ein T. (ein_typ)


Lesenswert?

M. M. schrieb:
> Leider ist das prettyprint der ursprünglichen Quelle völlig verkackt und
> die xml-Files sind zugemüllt mit whitespaces (diverse unnötige
> Linebreaks, Leerzeichen, Tabs).

Ich verstehe zwar, was Du sagst, aber Beispiele für die Daten und Deinen 
Code wären ganz nett, damit man sich vorstellen kann, was Du genau 
meinst.

> Die Dateien sind so kaum menschenlesbar.

Möglicherweise ist es eine Geschmackssache, aber ich persönlich halte 
XML-Dateien ohnehin nicht für menschenlesbar... ;-)

> Wie löse ich das also elegant?

Vielleicht wäre ein Anzeigeskript sinnvoll, das die Daten aus Deinen 
XMLs übersichtlich und schick formatiert anzeigen kann. Im Zweifel 
könnte es helfen, Deine XML-Dateien mit BeautifulSoup anstelle von 
ElementTree zu parsen, weil BS (meiner Meinung nach) hübschere Ausgaben 
erzeugen kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.