Is there a way not to load the whole feed but only the first 10
tag?
$feed = \'rss file\';
$xml = simplexml_load_file(
No. A DOM parser (such as SimpleXML) can only load the entire document.
But you can use XPath to filter the relevant parts:
$xml = simplexml_load_file($feed);
$top10 = $xml->xpath('/rss/channel/item[position() <= 10]');
foreach($top10 as $item) {
// output $item;
}
With use of the XMLReader you can achieve this. This avoids the consumption of large amount of RAM.
$xmlr = new XMLReader();
$xmlr->open('path/to/file');
// ...
// move the pointer with $xmlr->read(), $xmlr->next(), etc. to the required
// elements and read them with simplexml_load_string($xmlr->readOuterXML()), etc.
// ...
$xmlr->close();