Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#4

Re: TidHTTP.Get um TXMLDocument zu füllen

  Alt 13. Jan 2010, 16:34
Zitat von nahpets:
Der IE kann die XML-Seite problemlos einlesen, so dass ich mal von einem korrekten XML ausgehe.
Der IE ist kein XML Parser.
Da viele HTML-Seiten total mit Fehlern gefüllt sind, arbeiten HTML-Parser fehlerresistent und versuchen vieles "irgendwie" dennoch auszuwerten und anzuzeigen.

XML-Parser arbeiten da strickter ... was eigentlich nicht schlimm ist, da XML "streng" geregelte Regeln/Spezifikationen besitzt.

$A0 ist kein UTF-8-Zeichen, also wird der Fehler korrekt angezeigt.


Die genannte XML-Datei ( http://www.google.com/ig/api?weather...+Germany&hl=de ) besitzt keinen XML-Header und ohne sollte es laut XML-Spec UTF-8 sein, aber hier sieht es mehr nach ANSI aus.

Lösung: entweder nach UTF-8 konvertieren, bevor du es an TXMLDocument übergibst
oder du setzt einen XML-Header (XMLInstructionNode) davor, welcher was von ANSI sagt.



PS: Geh über den Stream, denn sonst bekommst du ab D2009 Probleme.
aktuell (bis D2007) könnte man es so versuchen
XMLDoc.XML.Text := '<?xml version="1.0" encoding="ISO-8859-1"?>' + IdHTTP1.Get(Trim(edURL.Text)); aber besser kommst du, du downloadest die Datei in einen Stream,
fügst vor den Dateidaten das '<?xml version="1.0" encoding="ISO-8859-1"?>' ein (natürlich als ANSI)
und nutzt dann LoadFromStream.

PSS: genau wegen sowas kann man bei himXML auch einen "Default"-Kodierung angeben ... also wenn die "angegebene" Kodierung nicht mit der tatsächlichen Kodierung übereinstimmt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat