Todo depende de qué tan grande sea la unidad de trabajo, pero supongo que está tratando de tratar cada <product/>
nodo en sucesión.
Para eso, la forma más sencilla sería usar XMLReader para llegar a cada nodo, luego usar SimpleXML para acceder a ellos. De esta manera, mantiene bajo el uso de memoria porque está tratando un nodo a la vez y aún aprovecha la facilidad de uso de SimpleXML. Por ejemplo:
$z = new XMLReader;
$z->open('data.xml');
$doc = new DOMDocument;
while ($z->read() && $z->name !== 'product');
while ($z->name === 'product')
{
$node = simplexml_import_dom($doc->importNode($z->expand(), true));
var_dump($node->element_1);
$z->next('product');
}
Descripción general rápida de los pros y los contras de diferentes enfoques:
XMLReader solamente
Ventajas: rápido, usa poca memoria
Contras: excesivamente difícil de escribir y depurar, requiere mucho código de usuario para hacer algo útil. El código del área de usuario es lento y propenso a errores. Además, te deja con más líneas de código para mantener
XMLReader + SimpleXML
Ventajas: no usa mucha memoria (solo la memoria necesaria para procesar un nodo) y SimpleXML es, como su nombre lo indica, realmente fácil de usar.
Contras: crear un objeto SimpleXMLElement para cada nodo no es muy rápido. Realmente tiene que compararlo para comprender si es un problema para usted. Sin embargo, incluso una máquina modesta podría procesar mil nodos por segundo.
XMLReader + DOM
Ventajas: utiliza tanta memoria como SimpleXML, y XMLReader :: expand () es más rápido que crear un nuevo SimpleXMLElement. Desearía que fuera posible usarlo, simplexml_import_dom()
pero no parece funcionar en ese caso
Contras: DOM es molesto para trabajar. Está a medio camino entre XMLReader y SimpleXML. No es tan complicado e incómodo como XMLReader, pero está a años luz de trabajar con SimpleXML.
Mi consejo: escriba un prototipo con SimpleXML, vea si funciona para usted. Si el rendimiento es primordial, pruebe DOM. Manténgase lo más lejos posible de XMLReader. Recuerde que cuanto más código escriba, mayor será la posibilidad de que introduzca errores o regresiones de rendimiento.