![]() |
XML Probleme Datei erstellen
Hallo
Sorry, dass ich schon wieder mit diesem Thema komme aber irgendwie schaffe ich es nicht eine XML Datei zu erstellen.
Code:
Diesen Code hab ich aus einem Beitrag aus diesem Forum aber bei mir scheint er nicht richtig zu funktionieren. An den Versionen von MSXML kann es nicht liegen ich hab (2,3,4) bereits ausprobiert.
procedure TForm2.Button3Click(Sender: TObject);
var Sub, Node : IXMLDOMNode; DomDoc: TDOMDocument; begin DomDoc:= TDOMDocument.Create(self); sub:= DOMDocument1.createElement('MeinNode'); sub.Text:= 'Hallo Welt'; node:= DomDoc.documentElement; //DomDoc.documentElement ist nil??? node.appendChild(sub); //hier bekomme ich Zugriffsverletzung ShowMessage(DOMDoc.documentElement.xml); //...Speichern mit DomDoc.Save..... end; Kann mir jemand helfen. Danke |
ich lese folgendermassen aus einer xml-datei
Delphi-Quellcode:
und das funzt wunderbar ;-)
procedure XXX.LoadFromHRXMLFile(FileName: String; AOwner: TComponent);
var FXMLDocument : TXMLDocument; lNode : IXMLNode; lNodeList : IXMLNodeList; i : integer; begin FXMLDocument := TXMLDocument.Create(AOwner); FXMLDocument.LoadFromFile(FileName); FXMLDocument.Active := True; //Root Element setzen lNode := FXMLDocument.DocumentElement; lNodeList := lNode.ChildNodes; //alle Nodes durchgehen for i := 0 to lNodeList.Count -1 do begin showmessage(lNodeList.Nodes[i].NodeName+'='+lNodeList.Nodes[i].text); end; da es sich um xml-dateien handelt, ist das speichern ist im prinzip ganz easy. du kannst das wie bei normalen textfiles machen
Delphi-Quellcode:
die einzelnen tags kannst du natuerlich baummaessig aus deinem zuvor gelesenen IXMLNode ermitteln und schreiben
AssignFile(f, FileName);
{$I-} rewrite(f); {$I+} if IOResult = 0 then begin writeln(f, '<?xml version="1.0" encoding="UTF-8"?>'); writeln(f, '<ROOTTAG>'); writeln(f, '<SUBTAG>'+FValue+'</SUBTAG>'); ... ich hoffe das hilft dir weiter |
Vielen Dank erstmal für die fixe Antwort
Leider funktioniert das ganze bei mir nicht, da ich diese ganzen Typen (TXMLDocument...) nicht habe kann es sein, dass diese ertst bei Delphi 6 enthalten sind? Ich hab leider Delphi 5 :cry: und mir deswegen die Typbibliothek von Microsoft (MSXML4) importiert. Ich wollte auch eine ganz neue Datei schreiben also soll bei mir kein LoadFromFile() stattfinden. Grüße |
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Gruß.
var
Sub : IXMLDOMNode; DomDoc : DOMDocument; begin domdoc := CoDOMDocument.Create; if(domdoc <> nil) then try sub := domdoc.createElement('MeinNode'); sub.text := 'Hallo Welt'; domdoc.appendChild(sub); ShowMessage(domdoc.xml); domdoc.save(ExtractFilePath(paramstr(0)) + 'test.xml'); finally domdoc := nil; end; end; |
Hey Danke,
hat funktioniert. Zitat:
Somit hatte ich eine Variable von Typ TDOMDocument statt DOMDocument. Komisch dass sich Delphi nicht beschwert hat. Bis dann.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 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