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.