Zitat von
lkz633:
Es muss doch irgendwie moeglich sein, mit createelement und addchild dies hinzubekommen.
Dieser Fetzten Code, macht genau das. Er erstellt im ersten "Block" das Grundgerüst für eine
XML Datei (3+4 Zeile). Dann wird der erste Knoten (KnotenEins) erstellt, der bei mir den Tabellennamen gekriegt hat (cbTabellen.Text). Außerdem bekommt er als Attribut noch den Servernamen, der in der String Variable "Server" liegt.
Dann werden alle Inhalte der Tabelle per For Schleife, in die Datei geschrieben. UnterKnoten wird jeweils der Name von der akt. Spalte zugewiesen, und der Spalteeintrag ist dann natürlich der Text aus dem Feld. Nach jeder Reihe muss der erste Knoten (KnotenEins) wieder geschloßen werden, weil es sonst einen Anzeigefehler gibt.
Code:
Datamodule1.XMLDocument1.Active := False;
DataModule1.XMLDocument1.XML.Text := '';
Datamodule1.XMLDocument1.XML.Text := '<?
xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>';
Datamodule1.XMLDocument1.XML.Text := Datamodule1.XMLDocument1.XML.Text + '<Tabellen-Abbild></Tabellen-Abbild>';
Datamodule1.XMLDocument1.Active := True;
KnotenEins := DataModule1.XMLDocument1.DocumentElement.AddChild(cbTabellen.Text);
KnotenEins.Attributes['Server'] := Server;
For X := 1 To DataModule1.ADODataSet1.RecordCount - 1 Do
Begin
For I := 0 To grdHaupt.Columns.Count - 1 Do
Begin
DataModule1.ADODataSet1.RecNo := X;
UnterKnoten := KnotenEins.AddChild(grdHaupt.Fields[I].FieldName);
UnterKnoten.Text := grdHaupt.Fields[I].Text;
End;
KnotenEins := DataModule1.XMLDocument1.DocumentElement.AddChild(cbTabellen.Text)
End;
Zitat von
lkz633:
Ausserdem moechte ich z.B eine bestehende Datei laden und dann Knoten hinzufuegen.
Code:
var
NewStock: IXMLNode;
ValueNode: IXMLNode;
Begin
DataModule1.XMLDocument1.FileName := Datei;
NewStock := DataModule1.XMLDocument1.FileName := Datei.DocumentElement.AddChild('stock');
NewStock.Attributes['exchange'] := 'NASDAQ';
ValueNode := NewStock.AddChild('name');
ValueNode.Text := 'Cisco Systems'
ValueNode := NewStock.AddChild('price');
ValueNode.Text := '62.375';
ValueNode := NewStock.AddChild('symbol');
ValueNode.Text := 'CSCO';
ValueNode := NewStock.AddChild('shares');
ValueNode.Text := '25';
End;
Und ganz wichtig, am ende
IMMER
Code:
DataModule1.XMLDocument1.SaveToFile(Datei)
sichern... sonst sieht man nüscht ...
Grüsse und ich hoffe das hilft Dir weiter,
Ricane