AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML-Datei öffnen

Offene Frage von "rakekniven"
Ein Thema von KahPee · begonnen am 9. Mai 2011 · letzter Beitrag vom 14. Jan 2012
Antwort Antwort
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#1

XML-Datei öffnen

  Alt 9. Mai 2011, 15:00
Hallo,

ich habe ein Problem beim Öffnen einer XML-Datei. Bisher habe ich immer alles auf Basis des Tutorials von Christopher Harms gemacht. Ich habe eine Prozedur geschrieben die eine XML-Datei nach dem, in dem Tutorial beschriebenen Schema öffnet, Der Rückgabewert gibt an ob die Datei geöffnet werden konnte:
Delphi-Quellcode:
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;
Der Anfang der zu öffnenden Datei sieht so aus:
Code:
<?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>
...
Ich habe mal den parseError.reason abgefangen der besagt folgendes:
Code:
DTD Validation when using the NewParser option or MXXMLWriter to build a DOMDocument is not supported
parseError.line ist "2"

Wo liegt der Fehler?

Vielen Dank im vorraus!

KahPee

Geändert von KahPee ( 9. Mai 2011 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: XML-Datei öffnen

  Alt 9. Mai 2011, 15:15
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Mai 2011 um 15:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: XML-Datei öffnen

  Alt 9. Mai 2011, 15:22
einfache Lösungen wären demnach
- die DTD entfernen
nicht möglich, da ich die Datei nicht erstelle
- NewParser nicht zu setzen
Wenn ich nicht parse erhalte ich einen Fehler "Zugriffsverletzung" bei:
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: XML-Datei öffnen

  Alt 9. Mai 2011, 17:37
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]);
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: XML-Datei öffnen

  Alt 9. Mai 2011, 18:46
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
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: XML-Datei öffnen

  Alt 10. Mai 2011, 07:51
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.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: XML-Datei öffnen

  Alt 10. Mai 2011, 08:55
Warum so weit weg? Es gibt hier im Forum doch himXML
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: XML-Datei öffnen

  Alt 10. Mai 2011, 09:11
Weil ich das eine kenne und damit erfolgreich gearbeitet habe und das andere eine Nullkomma-Versionsnummer hat.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
rakekniven

Registriert seit: 4. Apr 2008
Ort: Franken
82 Beiträge
 
Delphi XE5 Professional
 
#9

AW: XML-Datei öffnen

  Alt 14. Jan 2012, 20:46
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ß
Frag google
  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 05:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz