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;