Hi,
ich habe im Moment arge Probleme mit dem Laden einer
XML-Datei mit
OmniXML. Ich lade mit meinem Code, den ich
hier gepostet habe, die
XML-Datei aus dem Internet herunter. Dazu sollte man sagen, dass die Datei im UTF-8-Format (also
Unicode) abgespeichert ist und auch den entsprechenden Header hat.
Wenn die Daten angekommen sind, scheinen die auch richtig zu sein. Der Debugger sagt mir zumindest:
Code:
'<?
xml version="1.0" encoding="UTF-8"?>'#$A'<cxupdate>'#$A#9'<project id="wpchanger" name="WallpaperChanger" page="http://blog.calganx.net/software/wpchanger/">'#$A#9#9'<version id="1.7.1" date="2006-08-13">'#$A#9#9#9'<changelog><![CDATA['#$A#9#9#9'Not available yet'#$A#9#9#9']]></changelog>'#$A#9#9'</version>'#$A#9#9'<version id="1.8" date="2007-05-06">'#$A#9#9#9'<changelog><![CDATA['#$A#9#9#9'<h1>WallpaperChanger V1.8</h1>'#$A'<ul>'#$A'[*][b]Fix:[/b] Problem mit Minimieren des Fensters behoben (Ticket #1)'#$A'[*][b]Feature:[/b] [i]CXUpdate[/i]-Anbindung.'#$A'[/list]'#$A#9#9#9']]></changelog>'#$A#9#9#9'<downloads>'#$A#9#9#9#9'<download id="0" downloadable="1" type="zip">http://blog.calganx.net/download/1</download>'#$A#9#9#9#9'<download id="1" downloadable="1" type="setup">http://blog.calganx.net/download/2</download>'#$A#9#9#9'</downloads>'#$A#9#9'</version>'#$A#9'</project>'#$A#9'<project id="infotunes" name="infoTunes" page="">'#$A#9'</project>'#$A#9'<project id="cxupdate" name="CXUpdate-Demo" page="http://trac.calganx.net/milestone/cxupdate.v01">'#$A#9#9'<version id="0.0" date="2007-05-01">'#$A#9#9#9'<changelog><![CDATA['#$A#9#9#9'Initial release'#$A#9#9#9']]></changelog>'#$A#9#9#9'<downloads>'#$A#9#9#9#9'<download id="0" downloadable="0">http://trac.calganx.net/browser/cxupdate/client/delphi/trunk</download>'#$A#9#9#9'</downloads>'#$A#9
#9'</version>'#$A#9#9'<version id="0.1" date="2007-05-12">'#$A#9#9#9'<changelog><![CDATA['#$A#9#9#9'2nd Beta release'#$A#9#9#9']]></changelog>'#$A#9#9'</version>'#$A#9#9'<version id="1.0" date="2007-08-13">'#$A#9#9#9'<changelog><![CDATA['#$A#9#9#9'Final release'#$A#9#9#9']]></changelog>'#$A#9#9'</version>'#$A#9'</project>'#$A'</cxupdate>'#$A#$10'Ú'#$12
Mein Code zum Laden der Datei in die OmniXML-Klasse sieht so aus:
Delphi-Quellcode:
var
XmlString: WideString;
{...}
// Stream mit XML-Daten erzeugen
if (
not Assigned(fXmlStream))
then
fXmlStream := TMemoryStream.Create;
XmlString := GetXMLString;
// GetXMLString lädt die Datei aus dem Internet (siehe Link oben)
fXmlStream.
Write(XmlString, length(XmlString));
// Datei aus Internet laden
if (
not fXmlParser.LoadFromStream(fXmlStream))
then
begin
raise EInOutError.Create('
Datei konnte nicht geladen werden.');
Exit;
end;
Beim Laden erhalte ich nun konsequent eine
Exception vom OmniXML (OmniXML.pas, Zeile 2769):
Zitat:
Erste Gelegenheit für
Exception bei $7C812A5B.
Exception-Klasse EXMLException mit Meldung 'A name contained an invalid character.'. Prozess CXUpdateDemo.exe (3640)
Scheinbar handelt es sich dabei um ein #0-Zeichen direkt am Anfang des Tags (zwischen < und dem Tagnamen).
Nun steht in den Supportforum, dass es Probleme beim Laden gibt, wenn das Encoding-Attribut angegeben wird. Ich habe jetzt den ganzen Block mit <?
xml ... ?> herausgenommen, habe nur das Encoding herausgenommen, habe das Encoding verändert, ...
Nichts hilft. Er kann einfach nichts laden.
Hat jemand eine Idee, woran das liegen könnte? Es treibt mich langsam wirklich zur Weißglut.
Chris