PHP a práce s dokumentem XML 2.
Jednoduchý parser jsme si vytvořili už minule. K tomu, abychom mohli efektivně využívat všech možností, které nám dvojice PHP a XML nabízí, ale musíme znát ještě několik dalších funkcí.
Obsluha instrukcí zpracování
Co je to instrukce zpracování? Jedná se o kód určený pro nějakou konkrétní aplikaci. Je uzavřený mezi <? a ?>. První slovo následuje ihned bez mezery za <? a obsahuje název aplikace, pro kterou je kód určen. Takto vypadá instrukce zpracování pro PHP:
<?php echo(„HELLO WORLD!“); ?>
Syntaxe registrační funkce instrukcí zpracování je následující:
int xml_set_processing_function_handler(int parser, string funkceproinstrukcezpracovani);
Obslužná funkce zaregistrovaná pomocí xml_set_processing_function_handler musí mít sytaxi následující:
function funkceproinstrukcezpracovani(int parser, string program, string data);
Pokud budeme chtít například provést všechny PHP příkazy v dokumentu, kód bude vypadat takto:
function instrukcezpracovani($parser, $program, $instrukce) {
if(eregi($program,“PHP“)) eval($instrukce);
}
Výchozí obsluha
Funkce zaregistrovaná jako výchozí obsluha bude volána, když parser narazí na jakoukoli část dokumentu, která nemá přiřazenu obslužnou funkci. Funkci registrujeme pomocí set_default_handler
int set_default_handler(int parser, string vychoziobsluha);
Syntaxe funkce, která bude zaregistrována jako výchozí obsluha je velmi jednoduchá:
vychoziobsluha(int parser, string neobsluhovanytext);
Příklad:
function vychoziobsluha($parser, $neobsluhovanytext) {
echo($neobsluhovanytext);
}
set_default_handler($parser, „vychoziobsluha“);
Nastavení možností parseru
Další možnosti parseru můžeme nastavit zavoláním funkce xml_parser_set_option. U té můžeme nastavit, jestli se mají názvy elementů převádět na velká písmena (XML_OPTION_CASE_FOLDING) a určit cílové kódování (XML_OPTION_TARGET_ENCODING). Převádění názvů elementů na velká písmena může být velmi užitečné, někdy však i na obtíž. Problém tkví v tom, že hodnota této možnosti je standardně nastavena na true, což znamená, že se při výchozím nastavení malá písmena na velká převádějí. Cílové kódování doporučuji ponechat beze změny, protože parser umí takto pracovat pouze s UTF-8 a ISO-8859-1. Ostatní kódování nepodporuje.
Funkce má tuto syntaxi:
int xml_parser_set_option(int parser, int možnost, mixed hodnota);
Nastavení je nutno provést ještě před tím, než parser začne zpracovávat dokument (jako je to u obslužných funkcí). Příklad:
xml_parser_set_option($parser, XML_OPTION_CASE FOLDING, false);
Uvolnění parseru
Po zpracování XML dokumentu by se měly uvolnit systémové prostředky přiřazené parseru a parser se vymaže. Pokud tuto operaci potřebujeme z jakéhosi důvodu vyřešit „po svém“ (obvykle je to třeba při zpracovávání dokumentu), jsme odkázáni na funkci xml_parser_free(). Ta má jednoduchou syntaxi:
int xml_parser_free(int parser);
A použijeme ji takto:
xml_parser_free($parser);
Další funkce
xml_get_current_line_number
int xml_get_current_line_number(int parser);
Vrací číslo aktuální řádky.
xml_get_current_column_number
int xml_get_current_column_number(int parser);
Vrací číslo aktuálního znaku v řádku.
xml_get_current_byte_index
int xml_get_current_byte_index(int parser);
Vrací aktuální pozici v souboru.
xml_get_error_code
int xml_get_error_code(int parser);
Pokud vrátí funkce xml_parse hodnotu false, stala se chyba a tato funkce vrácí její kód.
xml_get_error_string
string xml_get_error_string(int kodchyby);
Pokud dostaneme od funkce xml_get_error_code chybový kód, můžeme ho převést na popis chyby pomocí této funkce.
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
-
AI a internetové podvody
29. října 2024 -
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Umělá inteligence v IT
27. září 2023 -
Windows App: Pracujte odkudkoliv, kdykoliv
3. listopadu 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