У меня есть XML-файл xml, который довольно большой, с более чем 700 узлами. Я использую XMLReader Iterator library, чтобы разобрать его и отобразить результаты как 10 на страницу.как читать только часть xml-файла с php xmlreader
Это мой пример кода для синтаксического анализа XML:
<?php
require('xmlreader-iterators.php');
$xmlFile = 'http://www.example.com/rss.xml';
$reader = new XMLReader();
$reader->open($xmlFile);
$itemIterator = new XMLElementIterator($reader, 'item');
$items = array();
foreach ($itemIterator as $item) {
$xml = $item->asSimpleXML();
$items[] = array(
'title' => (string)$xml->title,
'link' => (string)$xml->link
);
}
// Logic for displaying the array values, based on the current page.
// page = 1 means $items[0] to $items[9]
for($i = 0; $i <= 9; $i++)
{
echo '<a href="'.$items[$i]['link'].'">'.$items[$i]['title'].'</a><br>';
}
?>
Но проблема заключается в том, что для каждой страницы, я разбирать весь файл XML, а затем просто отображать соответствующие результаты страницы, например: если страница равна 1, отображает от 1 до 10 узлов, а если страница 5, отображает от 41 до 50 узлов.
Это вызывает задержку отображения данных. Можно ли читать только узлы, соответствующие запрашиваемой странице? Итак, для первой страницы я могу читать узлы от 1 до 10 позиций, вместо того, чтобы анализировать весь XML-файл, а затем отображать первые 10 узлов. Другими словами, могу ли я применить ограничение при анализе xml-файла?
я наткнулся this answer из Гордона, затрагивающие подобный вопрос, но он использует SimpleXML, который не рекомендуется для разбора больших XML-файлов.
дайте свой XML-файл URL –
Это мой фактический файл XML: http://oar.icrisat.org/cgi/exportview/subjects/ s1 = 2E2/RSS2/s1 = 2E2.xml, который почти похож по структуре на URL-адрес фида Yahoo: http://sports.yahoo.com/mlb/teams/bos/rss.xml –
, пожалуйста, проверьте мой ответ – ncm