![]() |
XML-Datei öffnen
Hallo,
ich habe ein Problem beim Öffnen einer XML-Datei. Bisher habe ich immer alles auf Basis des ![]()
Delphi-Quellcode:
Der Anfang der zu öffnenden Datei sieht so aus:
function OpenXMLFile(Filename: string; var xmlDoc: IXMLDOMDocument2): boolean;
begin Result:=false; xmlDoc:= CoDOMDocument40.Create; xmlDoc.setProperty('NewParser', true); if not FileExists(FileName) then Result:=false else begin xmlDoc.load(FileName); if xmlDoc.parseError.errorCode <> 0 then begin MessageDlg('The XML-File is damaged and could not be opened.'+#13+'('+Filename+')',mtError, [mbOK], 0); Result:=false; end else Result:=true; end; end;
Code:
Ich habe mal den parseError.reason abgefangen der besagt folgendes:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "http://www.apple.com/DTDs/PropertyList-1.0.dtd" PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"> <plist version="1.0"> <dict> <key>Major Version</key> <integer>1</integer> <key>Minor Version</key> <integer>1</integer> <key>Application Version</key> <string>10.2.1</string> <key>Features</key> <integer>5</integer> ...
Code:
parseError.line ist "2"
DTD Validation when using the NewParser option or MXXMLWriter to build a DOMDocument is not supported
Wo liegt der Fehler? Vielen Dank im vorraus! KahPee |
AW: XML-Datei öffnen
Das steht ja eigentlich schon da.
In der XML ist eine DTD angegeben und aus irgendwelchen Gründen kommt deine gesetzte "NewParser"-Option damit nicht zurecht. einfache Lösungen wären demnach - die DTD entfernen - NewParser nicht zu setzen - eventuell kann man auch uch die Verwendung/Beachtung der DTD irgendwo abschalten :gruebel: |
AW: XML-Datei öffnen
Zitat:
Zitat:
Delphi-Quellcode:
showmessage(xmlDoc.DocumentElement.nodeName);
d.h. es lässt sich mit der Datei im weiteren Verlauf nicht mehr Arbeiten. Gibt es eventuell andere Möglichkeiten eine solche XML-Datei zu verarbeiten? KahPee |
AW: XML-Datei öffnen
Man muss immer prüfen, ob DocumentElement <> nil ist.
Auf das Ergebnis von Load() oder parseError.errorCode kann man sich leider nicht verlassen.
Delphi-Quellcode:
if not Assigned(xmlDoc.DocumentElement) then
raise Exception.CreateFmt('Datei %s konnte nicht geladen werden',[Filename]); |
AW: XML-Datei öffnen
Aber auch wenn das DocumentElement nicht zugewiesen ist bleibt das Problem bestehen, dass ich die Datei nicht öffnen kann. Die sieht übrigens aus wie oben beschrieben..
KahPee |
AW: XML-Datei öffnen
Versuchs mal mit TJvSimpleXml von den JEDIs. Das heisst *Simple*, weil nur wenig bis nix gecheckt wird. Damit läuft er über alle schlecht formatierten Stellen drüber und Du kannst Dich dann selbst drum kümmern.
|
AW: XML-Datei öffnen
Warum so weit weg? Es gibt hier im Forum doch himXML
|
AW: XML-Datei öffnen
Weil ich das eine kenne und damit erfolgreich gearbeitet habe und das andere eine Nullkomma-Versionsnummer hat.
|
AW: XML-Datei öffnen
Hast Du mittlerweile in Lösung?
Habe hier ein Programm das sich auch an der DTD von Apple in Zeile 2 stört. Wenn ich sie entferne, dann geht alles. Die XML zu editieren finde ich aber nicht gut. Nutze TXMLDocument von D2010. Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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