Einzelnen Beitrag anzeigen

bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Verwendung XML databinding wizard

  Alt 27. Feb 2020, 19:50
Danke für das Beispiel; Anbei der Code zum schreiben einer XML Datei, ein Graph mit 20 Knoten und die Knoten jeweils mit 2 Ecken verbunden :

Delphi-Quellcode:
var
  I, J, L: Integer;
  Graphml: IXMLGraphmltype;
  Graph: IXMLGraphtype;
  Node: IXMLNodetype;
  Data: IXMLDatatype;
  XMLDoc: IXMLDocument;
  Newkey: IXMLKeytype;
  NewNode: IXMLNode;
  NewEdge : IXMLEdgetype;


begin

  /// erzeuge eine einfache graphml / XML Datei

  XMLDoc := TXMLDocument.Create(nil);
  XMLDoc.Active := True;
  Graphml := Newgraphml;

  i:=1;
  Newkey := Graphml.Key.Add;
  Newkey.Id := 'KEY'+IntToStr(I);
  Newkey.For_ := 'egde';

  i:=2;
  Newkey := Graphml.Key.Add;
  Newkey.Id := 'KEY'+IntToStr(I);
  Newkey.For_ := 'node';

  for I := 1 to 20 do
  begin

    NewNode := Graphml.Graph.Add.Node.Add;

    NewNode.Attributes['name'] := 'node' + IntTostr(i);


  end;



  for I := 1 to 19 do
  begin

    NewEdge := Graphml.Graph.Add.Edge.Add;

    NewEdge.Attributes['name'] := 'edge' + IntTostr(i);

    NewEdge.Source := 'node' + IntTostr(i);

    NewEdge.Target := 'node' + IntTostr(i+1);

  end;


    NewEdge := Graphml.Graph.Add.Edge.Add;

    NewEdge.Attributes['name'] := 'edge' + IntTostr(i);

    NewEdge.Source := 'node' + IntTostr(20);

    NewEdge.Target := 'node' + IntTostr(1);



  mmo1.Text := Graphml.Xml;
  XMLDoc.xml.SaveToFile('e:\test.xml');



  mmo1.lines.SaveToFile('e:\test_lib.graphml');
end;


OK, ich bekomme jetzt eine XML Datei, wenn ich das memo abspeichere.
Der aktuelle Fehler liegt aber in der Struktur der XML Datei. um jede Node oder Edge wird ein Begin/End <graph> Tag geschrieben, dies ist natürlich so falsch, wie kann man diesen Fehler beheben ??

Delphi-Quellcode:
<graphml><key id="KEY1" for="egde"/><key id="KEY2" for="node"/>

<graph>

<node name="node1"/>[B]</graph><graph>[/B]<node name="node2"/>[B]</graph><graph>[/B]
<node name="node3"/>[B]</graph><graph>[/B]<node name="node4"/>[B]</graph><graph>[/B]<node name="node5"/>

Geändert von bernhard_LA (28. Feb 2020 um 10:47 Uhr)
  Mit Zitat antworten Zitat