Zpracování XML souboru
Zde bych chtěl popsat funkce, které jsou potřeba pro zobrazení dat, uložených v XML dokumentu.
Nejdříve je nutné inicializovat XML parser, k tomu slouží funkce xml_parser_create(). Poté musíme pomocí funkcí xml_set_element_handler() a xml_set_character_data_handler() vytvořit funkce, které budeme používat pro manipulaci s názvem a obsahem elementů.
Nyní máme připraveno vše potřebné, pro analýzu XML dokumentu. Tu provedeme pomocí funkce xml_parse().
Nyní se pokusím popsat jednoduchý skript, který je zobrazen pod tímto odstavcem. Pomocí funkce startElement() načteme název do globální proměnné $tag. Funkce characterData() zobrazuje data obsažená v příslušném elementu. Pomocí podmínky se zbavíme elementů, které nemají žádný obsah. Funkce endElement() je v tomto skriptu nevyužitá. Nakonec zrušíme XML parser pomocí funkce xml_parser_free().
<?php
$file = 'pokus.xml';
function startElement ($xml_parser, $name, $attrs)
{
global $tag;
$tag = $name;
}
function endElement ($xml_parser, $name)
{
}
function characterData ($xml_parser, $char)
{
global $tag;
if (Trim($char) != '')
{
print $tag.' = '.Trim($char).'<br>';
}
}
$xml_parser = xml_parser_create('UTF-8');
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, 'characterData');
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
Na obrázku je znázorněn výstup skriptu. Jako XML soubor byl použit soubor z předchozí kapitoly.