Announcement

Collapse
No announcement yet.

Problem beim Speichern von XML-Dateien via TXMLDocument

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem beim Speichern von XML-Dateien via TXMLDocument

    Hallo,

    ich habe folgendes Problem:
    Ich habe Einstellungsdaten in einer XML-Datei (Konfigurationsdatei) abgelegt und möchte diese beim Programmstart laden.
    Prinzipiell ist das auch einwandfrei möglich. Problematisch wird es erst, wenn das XML-Dokument fehlerhaft ist, wenn es also beispielsweise zu einem öffnenden kein schließendes Tag gibt oder ähnliches.
    Diese Fehler fange ich nun mit try...except ab und möchte das fehlerhafte Dokument verwerfen und stattdessen ein neues Dokument mit Standardwerten erzeugen.
    Ich verwende hierfür die Komponente TXMLDocument in Delphi 6 Enterprise. Der Quelltext könnte wie folgt aussehen:
    Code:
    // beim Programmstart laden
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      try
        XMLDocument1.LoadFromFile('Settings.xml');
      except
        // das parsen ist fehlgeschlagen - neues Dokument erzeugen
        XMLDocument1.FileName := '';
        XMLDocument1.Active := True;
        XMLDocument1.DocumentElement := XMLDocument1.CreateElement('settings', '');
        // weitere Knoten hinzufügen
      end;
    end;
    
    // jetzt irgendwas mit den Knoten veranstalten (z. B. deren Text-Eigenschaft ändern)
    
    // bei Programmende speichern
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      try
        XMLDocument1.SaveToFile('Settings.xml');
      except
      end;
      If XMLDocument1.Active Then XMLDocument1.Active := False;
    Die XML-Komponente habe ich dem Formular direkt hinzugefügt:
    Code:
    object XMLDocument1: TXMLDocument
      Options = [doNodeAutoCreate, doNodeAutoIndent]
      ParseOptions = [poValidateOnParse]
      Left = 240
      Top = 160
      DOMVendorDesc = 'MSXML'
    end
    So und nun mein Problem:
    Es wird alles fehlerfrei kompiliert, beim Programmstart werden die Fehler korrekt abgefangen und das Programm läuft so weiter wie es soll.
    Wenn ich jetzt allerdings das Programm beende, bekomme ich eine völlig leere XML-Datei gespeichert (0 Bytes). Wie kann das sein?

    Vielen Dank schonmal für eure Hilfe und viele Grüße
Working...
X