Thema: Delphi Problem mit XML Datei

Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Problem mit XML Datei

  Alt 29. Okt 2003, 17:42
Also, du hast in deinem Hauptformular irgendwo "xmlDoc" deklariert, das sehe ich an dieser Zeile:
xmlDoc:=frm_main.xmlDoc; Und im "OnCreate" dieser Form (frm_main) wirst du schätzungsweise versuchen, die XML-Datei zu laden bzw. zu suchen, bspw. so:
Delphi-Quellcode:
if(fileexists('blabla.xml')) then
  xmldoc.load('blabla.xml')
Der Sinn ist jetzt, im Fall eines Fehlers (Datei existiert nicht), das Dokument zu erzeugen
Delphi-Quellcode:
else
  xmldoc.loadXML('<?xml version="1.0" encoding="iso-8859-1"?><BuddLister/>');
Du kannst nach dem Laden einer existierenden Datei auch auf Nummer sicher gehen mit:
Delphi-Quellcode:
if(xmldoc.documentElement.Get_NodeName <> 'BuddLister') then
  xmldoc.loadXML('<?xml version="1.0" encoding="iso-8859-1"?><BuddLister/>');
Falls also irgendwer die XML-Datei manipuliert und den Namen des Root-Knotens geändert hat, wird das so erkannt, und du erstellst das Dokument auch wieder neu. Damit gehen aber evtl. vorhandene "Buddy"-Knoten verloren. Wobei sich dieses Problem natürlich auch lösen lässt.

So habe ich mir das vorgestellt, und wenn du das mal probierst, dann solltest du auch keine Fehlermeldung bekommen. Wichtig an der ganzen Geschichte war einfach nur, dass es nicht ausreicht, eine leere XML-Datei zu erzeugen. Damit ist das XML-Dokument im Programm (xmlDoc) trotzdem noch leer. Es gibt keinen Root-Knoten (xmldoc.documentElement), und dadurch kam es zur Zugriffsverletzung, weil du versucht hast, den erstellten Knoten an einen nicht existierenden Root-Knoten anzuhängen.
  Mit Zitat antworten Zitat