![]() |
documentElement ist nil
Ich versuche gerade daten in eine XML-Datei zu schreiben:
Delphi-Quellcode:
Jetzt musste ich aber feststellen, dass in der Prozedur WriteContact die Eigenschaft documentElement von FXMLDoc nil ist. Wie kommt das? Was habe ich vergessen?
procedure TContactCollection.SaveToXMLFile;
procedure WriteFileInfo; begin end; procedure WriteContact(Contact: TContact); var NewNode : IXMLDOMNode; begin if FXMLDoc.documentElement = nil then Exit; NewNode := FXMLDoc.createElement('Kontakt'); if (NewNode <> nil) then try createElement(FXMLDoc, NewNode, 'Name', Contact.Name); createElement(FXMLDoc, NewNode, 'Vorname', Contact.Vorname); createElement(FXMLDoc, NewNode, 'Strasse', Contact.Strasse); createElement(FXMLDoc, NewNode, 'PLZ', Contact.PLZ); createElement(FXMLDoc, NewNode, 'Ort', Contact.Ort); createElement(FXMLDoc, NewNode, 'Land', Contact.Land); createElement(FXMLDoc, NewNode, 'Telefon1', Contact.Telefon1); createElement(FXMLDoc, NewNode, 'Telefon2', Contact.Telefon2); createElement(FXMLDoc, NewNode, 'EMail1', Contact.EMail1); createElement(FXMLDoc, NewNode, 'EMail2', Contact.EMail2); createElement(FXMLDoc, NewNode, 'URL', Contact.Homepage); createElement(FXMLDoc, NewNode, 'GebDat', Contact.GebDat); createElement(FXMLDoc, NewNode, 'Firma', Contact.Firma); // createElement(FXMLDoc, NewNode, 'Bem', Contact.Bem); // neuen Knoten anhängen FXMLDoc.documentElement.appendChild(NewNode); finally NewNode := nil; end; end; var i : Integer; begin FXMLDoc := CoDOMDocument40.Create; FXMLDoc.async := false; FXMLDoc.resolveExternals := false; FXMLDoc.preserveWhiteSpace := false; // wenn XML-Adressdatei nicht existiert, neu anlegen if (not FileExists(FFilename)) then begin FXMLDoc.loadXML('<?xml version="1.0" encoding="ISO-8859-1"?><adressdb/>'); end; //WriteFileInfo; for i := 0 to Self.Count - 1 do begin WriteContact(Self.Items[i]); end; FXMLDoc.save(FFilename); end; |
Re: documentElement ist nil
vermutlich mußt du da auch erstmal das Rootelement erstellen?
Delphi-Quellcode:
aber eigentlich machst du das ja in FXMLDoc.loadXML :gruebel:
XML := TXMLDocument.Create(Self);
Try XML.Active := True; XML.Version := '1.0'; XML.StandAlone := 'yes'; XML.Encoding := 'UTF-8'; XML.Options := [doNodeAutoCreate, doNodeAutoIndent, doAttrNull]; XML.AddChild('xml')//->hier; Wird der Teilt denn auch ausgeführt? [edit=mkinzler]Delphi-Tags sind besser Mfg, mkinzler[/edit] |
Re: documentElement ist nil
Delphi-Quellcode:
...bringt ein erfolgreiches "adressdb"
uses ActiveX, comObj;
procedure TForm1.Button1Click(Sender: TObject); var xmlDoc:Variant; begin xmlDoc:=CreateOleObject('Msxml2.DOMDocument'); xmlDoc.loadXML('<?xml version="1.0" encoding="ISO-8859-1"?><adressdb/>'); showmessage(xmlDoc.documentelement.nodename); end; |
Re: documentElement ist nil
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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