PHP a práce s dokumentem XML 3.
Dnes využijeme znalosti z minulých dílů a předvedeme si, co kombinace XML a PHP dokáže. Sestrojíme si parser, který bude umět zapsat data do pole a z těchto dat pak vytvoří tabulku. Parser se bude skládat ze dvou částí – čtečky XML souboru a skriptu, který předá data ve formě tabulky na obrazovku. Celý skript lze použít pro zobrazování ceníků či různých seznamů.
Budeme předpokládat, že zdrojový XML soubor vypadá nějak takto, jednoduchými úpravami ve skriptu ho však můžeme přizpůsobit i pro jiné typy souborů.
V první části bude samotný parser. Před jeho spuštěním zaregistrujeme obsluhu tagů a znakových dat. Pokaždé, když narazí parser na počáteční tag elementu symbolizujícího jeden řádek tabulky (<radek>), přičte k proměnné $radek jedničku. Když parser narazí na počáteční tag elementu symbolizujícího buňku tabulky (<sloupec>), přičte k proměnné $sloupec jedničku. Jakmile narazí parser na obsah elementu, začne ho vpisovat do $pole[$radek][$sloupec]. Je pravděpodobné, že parser narazí na několik „sloupců“ v jednom řádku. Pokaždé se při počátečním tagu pro buňku přidá nový sloupec, do kterého se obsah elementu vypíše. Až skončí řádek (tj. parser narazí na </radek>), nastaví se hodnota $sloupec zpátky na nulu.
Nejprve vytvoříme nový parser $parser a nastavíme příslušné proměnné na výchozí hodnotu:
|
Dále zaregistrujeme obsluhu elementů:
|
Obsluha počátečního tagu, pokud je jeho název radek, přičte k $radek jedničku. Pokud je název tagu sloupec, přidá k proměnné $sloupec jedničku. Obsluha koncového tagu, pokud je jeho název radek, vynuluje proměnnou sloupec, aby v dalším řádku šly sloupce zase od nuly. Nesmíme zapomenout na nastavování proměnných $pole, $radek a $sloupec jako globálních, protože jinak by se jejich hodnota po dokončení funkce vždy vynulovala.
Pak musíme zaregistrovat obsluhu textových znaků:
|
Do pole se postupně přidává znak po znaku celý obsah buňky budoucí tabulky. Opět nesmíme zapomenout nastavit globální proměnné.
A nyní přichází spuštění samotného parseru:
|
Pokud nepůjde otevřít soubor, zastaví se provádění celého skriptu a zobrazí se chybová hláška. Pokud při čtení narazí parser na chybu v XML, taktéž se ukončí provádění celého skriptu a zobrazí se JavaScript upozorňující na chybu.
Nyní přichází druhá, podstatně kratší část skriptu – zobrazení tabulky.
|
Princip je podobný, jako čtení ze souboru, jen data proudí z pole do zdrojového kódu. Postupně se vypisují všechny řádky a všechny sloupce tabulky. Řešení zápisu do pole a následné zobrazení má tu výhodu, že můžeme jednoduše prohodit řádky a sloupce (což by při přímém vypisování nešlo) a s polem se dá dělat spousta dalších užitečných věcí (hledání, matematické operace a podobně).
Jednoduchou úpravou zobrazovací části pak můžeme například zvýraznit první řádek a první sloupec tabulky:
|
Zdrojové soubory si můžete stáhnout a podívat se na první a druhou ukázku.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Responzivní design: Proč by ho neměl ignorovat žádný vývojář?
27. listopadu 2023 -
AI v programování: Jak používat GitHub Copilot (část 2)
19. února 2024 -
Jak se chránit před podvody na internetu – část 2
14. října 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024