AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML-Datei on the fly korrigieren

XML-Datei on the fly korrigieren

Ein Thema von Daniel · begonnen am 8. Okt 2010 · letzter Beitrag vom 8. Okt 2010
Antwort Antwort
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.471 Beiträge
 
Delphi 10.4 Sydney
 
#1

XML-Datei on the fly korrigieren

  Alt 8. Okt 2010, 10:08
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*)
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
ele

Registriert seit: 18. Feb 2009
129 Beiträge
 
Delphi 2010 Professional
 
#2

AW: XML-Datei on the fly korrigieren

  Alt 8. Okt 2010, 10:48
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.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.810 Beiträge
 
Delphi 2009 Professional
 
#3

AW: XML-Datei on the fly korrigieren

  Alt 8. Okt 2010, 10:52
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,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.603 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: XML-Datei on the fly korrigieren

  Alt 8. Okt 2010, 13:02
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 03:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf