Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno XML query v PHP

Máme za úkol vytvořit program v PHP, který bude na základě dotazu hledat ve vstupním xml souboru a generovat výstupní soubor s výsledky. Dotaz vypadá třeba takto:

SELECT cd FROM catalog WHERE country = UK

nebo

SELECT book FROM library WHERE author.name CONTAINS "Herbert"

atp.

V PHP jsem předtím nedělal, takže neznám všechny vychytávky. Jedu podle manuálu, hledám funkce, které dělají to, co se mi zdá, že potřebuji a nějak to skládám dohromady. Už mám první částečně funkční řešení, které umí zpracovat první uvedený dotaz. Ale je možné, že to mám zbytečně zadrátované. Proto bych se chtěl zeptat, jestli na to jdu správně. V projektu je dovoleno používat SimpleXML třídu. Zkusím stručně popsat řešení:

Parametry programu - funkce getops() - předtím řešeno pomocí proměnných argc a argv, ale getops() zdá se řeší vše automaticky

Samotný dotaz - kontroluji jeho správnou syntaxi pomocí regulárního výrazu - funkce ereg()

Ze souboru xml se vytvoří objekt pomocí funkce simplexml_load_file() a teď začíná ta nejistá část - mám 3 funkce, které se jedna po druhé volají rekurzivně a zanořují se podle hledaných elementů. Používají funkce children() a getName(). První funkce volá sama sebe, dokud nenajde uzel zadaný jako FROM. Poté se zavolá druhá funkce, která také rekurzivně hledá uzel SELECT a třetí funkce hledá elementy WHERE a testuje, zda se rovnají zadanému řetězci, či obsahují daný podřetězec.

Jak jsem psal, nějak to funguje, ale chtěl bych nějakou zpětnou vazbu, jestli to nejde dělat jednodušeji a přehledněji.

Díky.

Předmět Autor Datum
Posunuto nahoru. Nikdo nemá zkušenost? poslední
Niko Bellic 24.02.2014 10:14
Niko Bellic

Zpět do poradny Odpovědět na původní otázku Nahoru