Вы не должны использовать объектную модель документа в больших XML-файлах, она предназначена для удобочитаемых документов, а не для больших наборов данных!
Если вы хотите быстрый доступ, вам следует использовать XMLReader или SimpleXML.
XMLReader идеально подходит для анализа целых документов, а SimpleXML имеет удобную функцию XPath для быстрого получения данных.
Для XMLReader вы можете использовать следующий код:
<?php
// Parsing a large document with XMLReader with Expand - DOM/DOMXpath
$reader = new XMLReader();
$reader->open("tooBig.xml");
while ($reader->read()) {
switch ($reader->nodeType) {
case (XMLREADER::ELEMENT):
if ($reader->localName == "game") {
$node = $reader->expand();
$dom = new DomDocument();
$n = $dom->importNode($node,true);
$dom->appendChild($n);
$xp = new DomXpath($dom);
$res = $xp->query("/game/title"); // this is an example
echo $res->item(0)->nodeValue;
}
}
}
?>
выведите все названия игр (при условии, что у вас /game/title
структура XML).
Для SimpleXML вы можете использовать:
$xml = file_get_contents($url);
$sxml = new SimpleXML($xml);
$games = $sxml->xpath('/game'); // returns an array of SXML nodes
foreach ($games as $game)
{
print $game->nodeValue;
}