XML parsen
Verfasst: Mittwoch 28. September 2016, 14:35
Hi,
ich habe momentan das Problem, dass verschiedene XML-Parser die gleiche XML parsen und dabei ein Changeset rauskommt, der mit dem eigentlichen Inhalt nichts zu tun hat.
Konkret: Ich benutze von Qt die Tools lupdate und Linguist, um Übersetzungen in verschiedenen Sprachen vorzunehmen. Die Übersetzungen werden in XML-Dateien gespeichert.
Nun haben wir für gewisse Zwecke ein Python-Programm geschrieben, der diese XML-Dateien modifiziert. Nur wird der Stil von der ursprünglichen XML-Datei nicht beibehalten und wir erhalten nach der Verarbeitung ein riesiges Changeset. Der Qt-XML-Parser ist leider recht inkonsequent, so gibt es leere Tags wie:
Und andere Tags werden so abgeschlossen:
Wenn ich die Dateien mit python 3 mit der Standard-Konfiguration parse, dann wird z. B.
in
umgewandelt.
Wenn ich dem Parser sage, er soll die lange Variante nehmen, dann wird
zu
Nichts funktioniert. Ich bin kurz davor alles selber mit Regular Expression zu parsen. Gibt es noch andere Alternativen? Habe ich eine Option übersehen?
BTW: Wie konnte man an ein solches Szenario nie denken?! Es gibt noch andere Szenarien wie z. B. Checksums für XML-Datei wo ein Server die XML-Datei neu generiert und sich die Checksum ändert.
ich habe momentan das Problem, dass verschiedene XML-Parser die gleiche XML parsen und dabei ein Changeset rauskommt, der mit dem eigentlichen Inhalt nichts zu tun hat.
Konkret: Ich benutze von Qt die Tools lupdate und Linguist, um Übersetzungen in verschiedenen Sprachen vorzunehmen. Die Übersetzungen werden in XML-Dateien gespeichert.
Nun haben wir für gewisse Zwecke ein Python-Programm geschrieben, der diese XML-Dateien modifiziert. Nur wird der Stil von der ursprünglichen XML-Datei nicht beibehalten und wir erhalten nach der Verarbeitung ein riesiges Changeset. Der Qt-XML-Parser ist leider recht inkonsequent, so gibt es leere Tags wie:
Code: Alles auswählen
<translation></translation>Code: Alles auswählen
<Version number="2.0" />Code: Alles auswählen
<translation></translation>Code: Alles auswählen
<translation />Wenn ich dem Parser sage, er soll die lange Variante nehmen, dann wird
Code: Alles auswählen
<Version number="2.0" />Code: Alles auswählen
<Version number="2.0"></Version>BTW: Wie konnte man an ein solches Szenario nie denken?! Es gibt noch andere Szenarien wie z. B. Checksums für XML-Datei wo ein Server die XML-Datei neu generiert und sich die Checksum ändert.