Может ли SimpleXML загружать только часть XML?

Есть ли способ не загружать весь канал, но только первый <item></item> 10 <item></item> ?

 $feed = 'rss file'; $xml = simplexml_load_file($feed); //not the entire feed though 

Нет. Парсер DOM (такой как SimpleXML) может загружать только весь документ.

Но вы можете использовать XPath для фильтрации соответствующих частей:

 $xml = simplexml_load_file($feed); $top10 = $xml->xpath('/rss/channel/item[position() <= 10]'); foreach($top10 as $item) { // output $item; } 

С помощью XMLReader вы можете достичь этого. Это позволяет избежать большого объема оперативной памяти.

 $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();