XML парсер (parser) RSS-стрічок

Як мовиться: «xml це така штука, від якої всім дуже добре. - Але від цього не стає легше. Існує такий стандарт XML документів, як RSS. Ця нотатка присвячена тому, як можна парсить RSS-фіди засобами PHP. Розглянутий XML парсер - SimpleXML. Незважаючи на те, що він дуже простий, варто пам'ятати, що дане розширення є тільки в PHP 5, хоча є бібліотеки і для більш ранніх версій, але про це вже подбайте самі. Та й валідність багатьох RSS-стрічок бажає найкращого. Залишається лише вигадувати «милиці» та використовувати те, що маємо.

Так чи інакше, наше завдання полягає в тому, щоб засобами PHP завантажити дані RSS-стрічки та вивести їх на екран у тому вигляді, який нам необхідний. Окремо зазначу, що розібравшись із суттю питання ви зможете легко застосувати отримані знання в різних областях пов'язаних з парсингом XML зображень.

Отже, почнемо з того, що введемо змінну, значенням якої буде RSS-фід, що нас цікавить. Наприклад:

Тепер нам необхідно завантажити та відпарсувати ці дані. Тут я наведу два способи. Перший дозволяє вважати RSS-фід звичайним чином та використовуючи SimpleXML як парсинг рядка даних. Наприклад:

$xmlstr = @file_get_contents($rss); if($xmlstr===false)die('Error connect to RSS: '.$rss); $xml = новий SimpleXMLElement($xmlstr); if($xml===false)die('Error parse RSS: '.$rss);

Як ви бачите ми: — завантажили наш RSS-фід у рядок, який став значенням змінної $xmlstr; — перевірили, чи вдалося завантажити RSS-стрічку; — відпарсили дані RSS-фіда і надали результат змінної $xml; — перевірили, чи вдалося відпарсувати дані RSS-стрічки.

Всю цю процедуру можна спростити так:

$xml = @simplexml_load_file( $rss); if($xml===false)die('Error parse RSS: '.$rss);

Порівнявши два приклади, ви легко знайдете відмінності та зрозумієте суть. Тож не будемо зупинятись на досягнутому, і підемо далі. Тепер ми маємо дані RSS-стрічки у зручному для обробки форматі. Тут і об'єктно-орієнтований підхід та масиви даних. Щоб стало зрозуміліше, наведу приклад виведення даних RSS-стрічки:

foreach($xml->xpath('//item') as $item) echo ''.$item->title.'('.$item->pubDate.')'; echo ' '.$item->description.' '; >

Як бачите, тут я застосував Xpath запит для вибірки масиву записів RSS-фіда. Зауважте, що значенням є «дитина» item, батько якого channel (див. опис формату RSS). Саме тому маємо два сліші попереду. Щоб було наочніше, наведу приклад без використання Xpath:

foreach($xml->channel->item as $item)

Варто також зазначити, що ми отримуємо об'єкт $item, параметри якого виводимо на екран.

На цьому ніби й усе. Як бачите SimpleXML справді простий.

Написав гарний текст – отримав запрошення.

У «Пісочниці» діє премодерація: перед публікацією всі матеріали проходять через дбайливе проміння НЛО.

З великою ймовірністю не пройдуть премодерацію: