Einzelnen Beitrag anzeigen

Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#13

Re: XML; manipulieren ist ja kein Problem, aber ...

  Alt 15. Aug 2003, 08:28
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
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat