Лучше использовать XmlReader на проход структуры дерева а simplexml на чтение ноды можно прочитать большие xml без необходимости увлечение памяти скрипту.
( на практике применял когда парсил YML каталоги товаров по 2гб+ фаил средние значение поедание памяти 16-17мб.)
XmlReader читает документ на лету без загрузки дерева в оперативу
simplexml читает фаёл в оперативу потом разберает...
function getSimpleXMLInstance($xml_reader)
{
$doc = new DOMDocument('1.0', 'UTF-8');
return simplexml_import_dom($doc->importNode($xml_reader->expand(), true));
}
//....
$xml_reader = new XMLReader();
$reader = $xml_reader;
$reader->open($catalog->yml_catalog_url)
while ($reader->read())
{
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'sitemap')
{
try
{
// тут simplexml
$simpleXmlObject = getSimpleXMLInstance($reader);
}
catch (Exception $e)
{
continue;
}
}
}
ТС, обьем файла в мб?