Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML-Datei on the fly korrigieren (https://www.delphipraxis.net/155094-xml-datei-fly-korrigieren.html)

Daniel 8. Okt 2010 09:08

XML-Datei on the fly korrigieren
 
Moin,


ich bekomme von externer Quelle (die ich nicht ändern kann) XML-Dateien, die nicht immer ganz dem Standard entsprechen. "Nicht ganz" heißt konkret, dass hin und wieder mal ein  im Text eines Knotens enthalten ist. Die hexadezimale Notation ist formal korrekt, die XML-Datei ist erstmal valide, doch exakt dieses Zeichen darf (zusammen mit ein paar anderen) in einer XML-Datei nicht enthalten sein - zumindest laut dem W3C.

Der MSXML-Parser steigt dabei aus und wirft eine Fehlermeldung "illegal character". Prinzipiell hat er ja Recht, aber das ist für meine Anwender wenig zufriedenstellend. Diese wünschen sich, dass ich diese "illegalen Einwanderer" still entferne und mit dem Rest der Daten fortfahre. Der IE zum Beispiel kann das. Der zeigt mir die XML-Datei korrekt an - wenn auch unter Protest - und weist auf das fehlerhafte Zeichen hin. So weit würde ich auch gern kommen.

Wie kann ich hier sinnvoll vorgehen? Einen Event-Handler habe ich nicht gefunden, der es mir erlauben würde, das Zeichen zu entfernen und den XML-Parser zufrieden zu stellen. Immerhin liefert der Parser ja die Fehlerklasse "illegal character" sowie Zeile und Spalte des fehlerhaften Zeichens. Ich könnte mir jetzt einen eigenen Validator bauen, der den XML-Parser anstößt, dessen Fehlermeldungen auswertet, die Quelldaten entsprechend korrigiert und das so lang tut, bis der Datenstrom fehlerfrei ist. ... Aber das wird doch bestimmt eleganter gehen, oder? (Sagt jetzt bitte nicht "nein" *g*)

ele 8. Okt 2010 09:48

AW: XML-Datei on the fly korrigieren
 
Was hindert dich daran ungewünschte Zeichenfolgen aus den Daten zu entfernen bevor du sie dem XML-Parser übergibst? Ein einfaches StringReplace sollte da schon genug sein.

mjustin 8. Okt 2010 09:52

AW: XML-Datei on the fly korrigieren
 
Code in Java und C# der die in XML unzulässigen Zeichen aus einer UTF-8 Datei entfernt ist z.B. hier:

http://cse-mjmcl.cse.bris.ac.uk/blog...465494443.html

hope this helps,

himitsu 8. Okt 2010 12:02

AW: XML-Datei on the fly korrigieren
 
Konnte man beim MSXML (zumindest bei der 6.0) nicht diese Fehlermeldungen abschalten/ignorieren?

Mir war so, als wenn das ginge.
> also irgendwo in einem Thread, wo jemand mit MSXML seine Dateien validieren wollte. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz