sitask/xml-feed-parser

Framework-agnostic PHP parser for SITA (Slovenska tlacova agentura) XML news feeds.

Maintainers

Package info

github.com/PayteR/sita-xml-feed-parser

pkg:composer/sitask/xml-feed-parser

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

2.1.8 2026-08-25 02:02 UTC

This package is auto-updated.

Last update: 2026-08-26 20:09:49 UTC


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.
  • caption a source môžu byť null. null znamená „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.