Höchstwahrscheinlich schon. Am besten am Anfang
einmal die Datei laden, alles im
RAM machen und dann am Ende wieder einmal (am Stück) schreiben. Sofern der
RAM die Daten halten kann. Bedenke, Zugriffszeiten auf dem
RAM sind so 60 Nanosekunden, auf schnelle SSDs noch 9 Mikrosekunden.
Also die Implementierung sieht mir danach aus, dass bereits alles per
LoadFrom* eingelesen wird und somit nicht nochmal extra von Platte gelesen werden muss. Man müsste sich das mal im Detail anschauen, aber abhängig von der Größe und Komplexität der
XML-Datei hat man eben abertausende Node & Attribute Objekte die komplett durchsucht werden bis der gewünschte Knoten gefunden wird.
Die Frage ist daher in der Tat (hab gerade leider kein Delphi zur Hand), ob es an der NativeXML Implementierung liegt oder an einem "zu großen"
XML.
Im allgemeinen würde ich sowieso grundsätzlich empfehlen beim "in ein
XML greifen" mit XPath zu arbeiten - so könntest Du unabhängig von der jeweiligen Implementierung selbst angeben ob rekursiv gesucht werden soll oder nicht (Stichwort
Axes). Soweit ich sehe unterstützt NativeXML aber kein Xpath, oder irre ich mich?