Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Rekurzivní parsování HeurekaCategory z XML v PHP

Roman Kocian
verified
rating uzivatele
17. 10. 2017 11:18:00
Ahoj,
řeším problém s parsováním heureka "CATEGORY_FULLNAME" atributu v XML. Potřebuji to rekurzivně naparsovat jako option do select.
Řešil již někdo podobný problém?
Děkuji za radu a čas.
---------- Příspěvek doplněn 17.10.2017 v 11:33 ----------
PS: odkaz na strom kategorií zde: https://www.heureka.cz/direct/xml-export/shops/heureka-sekce.xml. Potřebuji vrátit pouze kategorie obsahující atribut "CATEGORY_FULLNAME" po sobě jdoucí. Nevím jak to mám napsat, jelikož když napíši:
je problém, že stále dokola volám "simplexml_load_file", což mi shodí server...
---------- Příspěvek doplněn 17.10.2017 v 12:24 ----------
Již jsem to vyřešil. Našel jsem toto řešení, které funguje:
$xml = file_get_contents($_SERVER .'/feeds/heureka/category.xml');
$document = new DOMDocument();
$document->loadXml($xml);
$xpath = new DOMXpath($document);
$relations = [];
$elements = [];
foreach ($xpath->evaluate('//CATEGORY') as $element) {
$id = (int)$xpath->evaluate('string(CATEGORY_ID)', $element);
$fullname = (string)$xpath->evaluate('string(CATEGORY_FULLNAME)', $element);
$parentId = (string)$xpath->evaluate('string(CATEGORY_ID)', $element);
$relations[] = $fullname;
$elements = $element;
if (!empty($fullname))
echo ('');
}
Doufám, že by to mohlo někomu pomoci.
PS: Pokud by měl někdo připomínky, budu rád. Díky.
17. 10. 2017 11:18:00
https://webtrh.cz/diskuse/rekurzivni-parsovani-heurekacategory-z-xml-v-php/#reply1306978
Tom
verified
rating uzivatele
(7 hodnocení)
17. 10. 2017 12:26:35
Tohle ti způsobí načtení souboru do paměti
takže není třeba jej načítat znovu. Prostě udělej zrovna to co potřebuješ
17. 10. 2017 12:26:35
https://webtrh.cz/diskuse/rekurzivni-parsovani-heurekacategory-z-xml-v-php/#reply1306977
Pro odpověď se přihlašte.
Přihlásit