Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Probleme beim Laden mit OmniXML

  Alt 12. Mai 2007, 23:00
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
  Mit Zitat antworten Zitat