Zadejte hledaný výraz...

Hledání v xml souboru. Nejefektivnější řešení.

Ahoj, mám XML soubor (cca 20 mb) s tagy a a podle těchto elementů potřebuji najít všechny výsledky v XML a z těchto výsledků vytvořit nové XML.
Například chci najít všechny elementy splňující tyto podmínky (alespoň jednu):
= "Foglar" a zároveň = "Dobrodružné"
= *jakýkoliv* a zároveň = "Román"
= "Hunter" a zároveň = *jakákoliv"
Řešení co mě napadají:
1. Šoupnout si XML do databáze, vyhledat data a složit XML. Přijde mi to celkem zbytečné a náročné (XML obsahuje celkem dost dat, je třeba data aktualizovat atd. atd.).
2. Vyhledat si přes Xpath jednotlivé výsledky a složit je. Přiznám se, že netuším náročnost, ale mám pocit, že to nebude nic moc.
3. Procházet XML po jednotlivých elementech (třeba přes SAX), zkontrolovat podmínky, a pokud je splňují tak rovnou zkopírovat element do nového souboru. Výhoda je, že si můžu ukládat pozici a v případě nějaké havárie není problém pokračovat ve scriptu kde jsem skončil.
--
Takže osobně používám 3, ale třeba je ještě nějaké elegantnější řešení, které mě nenapadlo?
8. 9. 2014 09:14:40
https://webtrh.cz/diskuse/hledani-v-xml-souboru-nejefektivnejsi-reseni#reply1053035
Alexy
verified
rating uzivatele
8. 9. 2014 09:50:50
V Php například jedním průchodem vytvořit slovník, array('kategorie' => array('autor 1' => 'kategorie' 'autor_2' => 'kategorie')); pak všichni autoři z kategorie_1, kategorie_2, takto array_merge(array_keys($dictionary), array_keys(dictionary)); nebo kategorie k autorovi array_filter($dictionary, function($x) { if (isset($x)) return $x; }); Pro větší efektivitu je možno názvy zakódovat do dalšího slovníku a v hlavním slovníku pracovat jen s přiděleným id.
8. 9. 2014 09:50:50
https://webtrh.cz/diskuse/hledani-v-xml-souboru-nejefektivnejsi-reseni#reply1053034
petrnson
verified
rating uzivatele
(5 hodnocení)
8. 9. 2014 11:07:41
Myslím si, že nejvhodnější je využít XSL transformaci pomocí některého z dostupných XSLT procesorů. Samotný princip transformace je právě v převodu XML souboru do dalších souborů s odlišnou strukturou, v tomto případě opět XML.
8. 9. 2014 11:07:41
https://webtrh.cz/diskuse/hledani-v-xml-souboru-nejefektivnejsi-reseni#reply1053033
Alexy
verified
rating uzivatele
8. 9. 2014 11:58:29
Napsal petrnson;1121960
Myslím si, že nejvhodnější je využít XSL transformaci pomocí některého z dostupných XSLT procesorů. Samotný princip transformace je právě v převodu XML souboru do dalších souborů s odlišnou strukturou, v tomto případě opět XML.
No dal by se použít i SimpleXML, rychle se soubor načte do paměti a umí i Xpath a generovat XML.
8. 9. 2014 11:58:29
https://webtrh.cz/diskuse/hledani-v-xml-souboru-nejefektivnejsi-reseni#reply1053032
Pro odpověď se přihlašte.
Přihlásit