Das Erstellen ist eigentlich nicht so schwer.
Der Root-Knoten ist auch nur ein ganz normaler XmlNode, so wie alle anderen Unterknoten auch, nur daß er eben nicht als Child an einem Node hängt, sondern am Document.
Wie gesagt ... siehe meine Demoanwendung.
Dort werden ja auch Dokumente dynamisch neu erzeugt.
Aus der CheckLibs-Demo:
Delphi-Quellcode:
var
XML: TXMLDocument;
Root, Node: IXMLNode;
XML := TXMLDocument.Create(
nil);
XML.Active := True;
//XML.Version := '1.0';
//XML.StandAlone := 'yes';
//XML.Encoding := 'UTF-8';
Root :=
XML.AddChild('
xml');
//for i := 0 to 9999 do
// Node := Root.AddChild('Node' + IntToStr(i));
XML.SaveToFile(ChangeFileExt(ParamStr(0), '
.xml'));
XML.Free;
Also sind das auch nur 2 Zeilen (Active+AddChild), gegenüber der einen Zeile, um die
XML als String zu laden.
Delphi-Quellcode:
var
XML: IXMLDocument;
XML := TXMLDocument.Create(
nil);
XML.Active := True;
XML.AddChild('
xml');
XML.SaveToFile(ChangeFileExt(ParamStr(0), '
.xml'));
sorry aber den unterschied check ich nicht. c und i sind doch identisch aufgerufen :-/
War'n Copy&Paste-Error
Der Unterschied sollten die Zielvariablen TXMLDocument/IXMLDocument sein. (notfalls hätte man sich das eventuell aus den Namen C
omponent/I
nterface erraten können)