![]() |
Probleme beim Laden mit OmniXML
Hi,
ich habe im Moment arge Probleme mit dem Laden einer XML-Datei mit ![]() ![]() Wenn die Daten angekommen sind, scheinen die auch richtig zu sein. Der Debugger sagt mir zumindest:
Code:
Mein Code zum Laden der Datei in die OmniXML-Klasse sieht so aus:
'<?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
Delphi-Quellcode:
Beim Laden erhalte ich nun konsequent eine Exception vom OmniXML (OmniXML.pas, Zeile 2769):
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; Zitat:
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 |
Re: Probleme beim Laden mit OmniXML
Ja, ich habe eine. Es klingt ganz nach einer UTF-16 kodierten Datei (also 2 Byte pro Zeichen). Nun weiss ich aber nicht, ob OmniXML MultiByte tauglich ist.
|
Re: Probleme beim Laden mit OmniXML
Hallo Chris,
deine Funktion GetXMLString() könnte einer der Übeltäter sein. Du speicherst in dieser Funktion einen UTF-8 Datenstrom in einem WideChar-Buffer. OmniXML kann mit UTF-16 und UTF-8 umgehen, aber du solltest den Inhalt von XMLString mal im Debugger überprüfen. Es würde mich nicht wundern, wenn dort UTF-8 kodierte Zeichen drin stünden. Freundliche Grüße |
Re: Probleme beim Laden mit OmniXML
Hi,
der XMLString-String, den mir der Debugger gibt, steht oben im Eingangspost. Speichere ich den String allerdings in einer Datei oder in einem FileStream, so ist das Ergebnis nur kryptisch. Nach einigen herum probieren, habe ich festgestellt, dass die Funktion tatsächlich nicht das tut, was sie soll. Ich bin jetzt vorübergehend auf eine externe Bibliothek umgestiegen, die auf die gleichen API-Calls zugreift, mit der es funktioniert. Es war also kein Fehler von OmniXML, sondern von GetXmlString. Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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