sitask / xml-feed-parser
Framework-agnostic PHP parser for SITA (Slovenska tlacova agentura) XML news feeds.
Requires
- php: >=7.4
- ext-libxml: *
- ext-simplexml: *
README
PHP trieda na spracovanie XML kanálov agentúry SITA (Slovenská tlačová agentúra). Bez závislostí, bez frameworku — dostane XML, vráti pole článkov.
Je to presne ten istý kód, aký používa oficiálny WordPress plugin SITA XML Importer, len vytiahnutý samostatne pre tých, ktorí WordPress nepoužívajú.
Potrebujete prístup ku kanálom SITA. Táto knižnica sama o sebe nemá čo spracovať. Záujem o prístup: obchod@sita.sk · ďalšie kontakty na biz.sita.sk
Tri spôsoby použitia
1. Composer (odporúčané)
composer require sitask/xml-feed-parser
2. Stiahnuť jeden súbor
Ak nepoužívate Composer, stačí skopírovať jediný súbor
src/FeedParser.php do projektu a načítať ho:
require_once 'cesta/k/FeedParser.php';
Trieda nemá žiadne závislosti okrem rozšírení simplexml a libxml, ktoré má PHP štandardne.
3. Máte WordPress? Použite plugin
Nič programovať netreba — nainštalujte SITA XML Importer z adresára pluginov. Rieši aj sťahovanie kanála, kategórie, obrázky, duplicity a plánovanie.
Použitie
use Sita\XmlFeed\FeedParser; $parser = new FeedParser(); // XML si stiahnete ako chcete - curl, Guzzle, file_get_contents... $xml = file_get_contents('https://example.sita.sk/feed.xml?token=...'); $articles = $parser->parse($xml); foreach ($articles as $article) { echo $article['title'], "\n"; echo $article['thumbnail']['url'], "\n"; } // Chyby sa nehádžu ako výnimky - jeden pokazený kanál nemá zhodiť celý beh. foreach ($parser->get_errors() as $error) { error_log('SITA feed: ' . $error); }
Štruktúra článku
[
'_w_id' => '12345', // ID článku v SITA
'u_id' => 'abc-123', // UnikatneID
'date_published' => '2026-08-19',
'time_publish' => '10:30:00',
'date_modified' => '2026-08-19',
'time_modified' => '11:00:00',
'title' => 'Nadpis',
'perex' => 'Perex',
'content' => '<p>Telo článku</p>', // HTML prefiltrované
'section' => ['category' => 'Ekonomika', 'sub_category' => 'Financie'],
'locations' => ['Bratislava'],
'thumbnail' => [
'url' => 'https://img.sita.sk/foto.jpg',
'size' => '2048',
'width' => '800',
'height' => '600',
'caption' => 'Popis obrázka', // null, ak kanál prvok neposiela
'source' => 'SITA/Ján Novák', // null, ak kanál prvok neposiela
],
]
Vlastný zoznam povolených HTML značiek
$parser = new FeedParser('<a><strong><em>');
Predvolený zoznam je v FeedParser::DEFAULT_ALLOWABLE_TAGS.
Dôležité správanie
- Články bez obrázka sa preskakujú. Ak
<ObrazokLinka>chýba alebo je prázdny, článok sa do výsledku nedostane. Je to zámer, nie chyba. captionasourcemôžu byťnull.nullznamená „kanál prvok neposlal" (staršie kanály), prázdny reťazec znamená „poslal ho prázdny". Rozdiel je podstatný, ak podľa toho preberáte popis z IPTC metadát obrázka.- Nehádžu sa výnimky. Pri pokazenom XML dostanete prázdne pole a dôvod
v
get_errors(). - Žiadne HTTP. Sťahovanie kanála je na vás — knižnica pracuje len s reťazcom. Zámerne: každý má vlastné požiadavky na timeouty, retry a proxy.
- XXE je blokované (
LIBXML_NONET).
Formát kanála
Popis prvkov XML (<Sprava>, <Obrazok>, …) nájdete v dokumentácii pluginu:
docs/xml-format.md
Testy
php tests/parser-smoke-test.php
Bez PHPUnit a bez závislostí. Skončí nenulovým kódom pri prvej chybe.
Požiadavky
PHP 7.4+ s rozšíreniami simplexml a libxml.
Licencia
GPL-2.0-or-later — rovnaká ako WordPress plugin.