AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TidHTTP.Get um TXMLDocument zu füllen
Thema durchsuchen
Ansicht
Themen-Optionen

TidHTTP.Get um TXMLDocument zu füllen

Ein Thema von Sherlock · begonnen am 13. Jan 2010 · letzter Beitrag vom 14. Jan 2010
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

Re: TidHTTP.Get um TXMLDocument zu füllen

  Alt 13. Jan 2010, 16:53
Hallo,
Zitat von himitsu:
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.
Stimmt, der IE selbst ist kein Parser, er benutzt den von Microsoft.
Bisher hat er mir noch keine XML-Datei angezeigt, die einen Fehler enthielt. Bei XML geht er anders vor als bei HTML, bei HTML darf geschludert werden, bei XML nicht.

Die Datei von Google enthält am Anfang die 3 typischen Bytes für UTF-8-Dateien, auch wenn es nicht nochmal explizit woanders steht. Das mag auch ein Problem sein. Ultraedit erkennt die Datei jedenfalls als UTF-8, zumindest dann, wenn man beim IE sagt: "Quelltext anzeigen". Will' nicht ausschließen, dass es erst dann UTF-8 wird.

Nagut: Wenn man die Datei per Indy holt, ist es ganz eindeutig kein UTF-8, aber die Hex A0 vor dem Prozentzeichen bleibt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 20:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz