Seite 1 von 1
XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 13:51
von diablo75
Hallo @ all,
ich habe ein kleines Problem mit der Formatierung von Umlauten(ä, ü, ö usw.).
Ich bekomme Kundendaten in Form einer XML Datei geliefert. Leider tanzt einer wieder mal aus der Reihe und
liefert die Daten in einer nicht konformen Art wie gewünscht.
Der Header :
und dann sehen die Umlaute so aus:
nach dem Umwandeln mit:
Code: Alles auswählen
def convert_in_utf_8(xmlfile):
myFileIn = xmlfile
myFileOu = 'utf_8.xml'
# open in binary mode ↓
with open( myFileIn, 'rb') as f:
root = ET.fromstring( f.read())
tree = ET.ElementTree(root)
tree.write(myFileOu, encoding='utf-8', xml_declaration=True)
return True
in utf-8 schaut es dann so aus:
also auch nicht viel besser.
Kann mir wer erklären wie man das lösen kann??
Re: XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 14:03
von Sirius3
Erste Frage ist, wie sehen die Bytes der Datei wirklich aus?
XML unterstützt nativ verschiedene Encodings, also sollte es egal sein, in welchem Encoding die Datei gespeichert ist, solange die Angabe im Header stimmt.
Warum liest Du das XML so kompliziert?
Variablennamen werden komplett klein geschrieben.
Ansonsten sieht der Code richtig aus.
Re: XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 14:23
von __deets__
Wenn Encoding und Bytes wirklich nicht zusammen passen, dann ist das kein XML, und damit verletzt der Kunde den Vertrag bzw. die Vereinbarung zum Datenaustausch. Nun kann es natuerlich sein, dass man daran nix aendern kann, weil der verantwortliche Entwickler auf deren Seite der Neffe des Chefs ist, und sich nix sagen laesst. Aber zumindest kommunizieren, dass die da etwas falsch machen, sollte man schon.
Re: XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 14:55
von diablo75
Danke für die Infos.
Es hat sich nun herausgestellt, dass die XML Datei fehlerhaft war. Nun wurde mir eine neue geliefert und siehe da: alle Umlaute sind korrekt
Damit stellt sich mir aber wieder eine neue Aufgabe: Wie kann ich überprüfen ob eine XML Datei fehlerhaft ist (wie oben z.B), damit ich mir sowas nicht in meine Datenbank einspiele??
(XML als String einlesen und nach komischen Zeichen suchen?)
Re: XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 14:57
von diablo75
Sirius3 hat geschrieben: Donnerstag 4. November 2021, 14:03
Warum liest Du das XML so kompliziert?
Variablennamen werden komplett klein geschrieben.
Ansonsten sieht der Code richtig aus.
Den code hab ich mir aus dem Internet kopiert
Re: XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 14:58
von __deets__
Allgemein gar nicht. Wenn die ein Encoding wie UTF-8 verwenden wuerden, waeren viele solcher Fehler vermeidbar, weil das recht spezifische Regeln hat, und eine versehentliche Fehlkodierung dadurch eher auffaellt. Aber wenn alles XML-konform ist, dann kann ¿ eben auch einfach der Name des Kindes von Elon Musk und Grimes sein. Bestenfalls kannst du auf eine Heuristik setzen, und nach Worten wie "fuer" (ich schreibe ohne Umlaute, weil meine Tastatur die nicht hat) oder aehnlichem suchen. Das kommt aber auf die Inhalte an.
Re: XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 15:06
von DeaD_EyE
Kaputte Encodings kann man vielleicht mit
ftfy fixen.
Das funktioniert oft ziemlich gut, aber zaubern kann das Tool auch nicht.
Wenn du das dann auf die XML-Datei anwendest, wirst du nachträglich auch den Codec auf utf8 im XML Dokument ändern müssen.
Vorher ein Backup machen.
Re: XML Umlaute - Utf-8
Verfasst: Donnerstag 4. November 2021, 19:14
von nezzcarth
diablo75 hat geschrieben: Donnerstag 4. November 2021, 14:55
Wie kann ich überprüfen ob eine XML Datei fehlerhaft ist (wie oben z.B), damit ich mir sowas nicht in meine Datenbank einspiele??
Der erste Schritt beim Import unbekannter Daten ist eigentlich immer die Analyse. Wenn es sich um einmalige Sachen handelt, kann man das manuell durchführen. Zum Beispiel mit den üblichen Unix-Tools für solche Zwecke oder auch interaktiv in einer Python-Shell. Daraus kann man dann ggf. auch einfache Prüfskripte schreiben. Speziell für die Überprüfung von XML-Dateien gibt es auch verschiedene Validierungstechniken, die teilweise jedoch einiges an Aufwand erfordern und daher eher dort anzutreffen sind, wo die professionelle Verarbeitung von XML zum Alltagsgeschäft gehört.