Einzelnen Beitrag anzeigen

bernhard_LA

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

große XML/GraphML Dateien schreiben

  Alt 26. Apr 2022, 17:48
Ich versuche gerade eine sehr große XML/GraphML ( http://graphml.graphdrawing.org/prim...ml-primer.html ) zu erzeugen. Bei kleinen Projekten bis 50.000 Elementen funktioniert der aktuelle Code perfekt.
Wir kann ich die Erzeugung von großen XML Files mit MSXML beschleunigen ?
x- Millionen Nodes, 30 ++ Gbyte RAM für die Anwendung, Laufzeit x Tage , nicht akzeptabel



Delphi-Quellcode:


function WritegraphMLdatei ( ...... ) : string ;

  LDocument: IXMLDocument;
  LNodeElement, LGRAPHelement, NodeText, NodeCData: IXMLNode;
begin

  ///
  ///
  ///

  CoInitialize(nil);

  ///
  /// the xml header
  ///
  LDocument := TXMLDocument.Create(nil);
  LDocument.Active := True;
  LDocument.DocumentElement := LDocument.CreateNode('graphml', ntElement, '');
  LDocument.DocumentElement.Attributes['xmlns'] :=
    'http://graphml.graphdrawing.org/xmlns';
  LDocument.DocumentElement.Attributes['xmlns:xsi'] :=
    'http://www.w3.org/2001/XMLSchema-instance';



  ///
  /// dieser Code wird x millionen fach ausgeführt ....
  ///

  for graph.Edge ....

  LNodeElement := LDocument.DocumentElement.AddChild('key', -1);
  LNodeElement.Attributes['id'] := 'nkey' + IntToStr(1);



  for graph.node ......

      LSubNodeElement := LGRAPHelement.AddChild('edge', -1);
      LSubNodeElement.Attributes['id'] := .... ;
      LSubNodeElement.Attributes['source'] := ... ;
      LSubNodeElement.Attributes['target'] :=...;
      .....


    end;

  finally

    result.Text := LDocument.XML.Text;

    CoUninitialize;

  end;

Geändert von bernhard_LA (27. Apr 2022 um 17:34 Uhr)
  Mit Zitat antworten Zitat