Autor Zpráva
Anonymní
Profil *
Poradíte mi jak můžu správně načíst XML?
Používám SAX, tj.

$parser=xml_parser_create("UTF-8");
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
...

A potřebuji načíst obsah elementu, obsahující HTML značky, překodovane do entit.
<p> odstavec... </p>

Ale nevim z jakeho duvodu mi parser vraci pouze obsah od posledniho znaku &; do konce XML znacky?

function endElement($parser, $name) {
global $znaky;

switch ($name) {
case "HTML:
echo $znaky;
$znaky="";
break;
...


Díky.
Anonymní
Profil *
Tak už jsem to vyřešil...problém byl handleru pro zpracování znaků
xml_set_character_data_handler($parser, "characterData");


původně jsem měl:

function characterData($parser, $data) {
global $znaky;
if (trim($data)!="") {
$znaky = $data;
}
}


a po experimentování jsem zjistil že se tento handler zřejmě volá vícekrát, pokud v obsahu narazí na nějakou entitu, tudíž se mi přemazával obsah proměnné $znaky.

úprava jednoduchá:
function characterData($parser, $data) {
global $znaky;
if (trim($data)!="") {
$znaky .= $data;
}
}

a pak nastavovat $znaky="" při rozpoznání počátečních značek.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0