Witam,
mam nastepujacy problem. Parsuje plik XML (oferta ksiegarni) w php i wszystko gra, dopoki w ktoryms ze znacznikow nie ma cudzyslowu (tutaj w tytule):
Kod
<book nr="42319">
<tytul>Telewizja i jej gatunki po "Wielkim Bracie"</tytul>
<autor>Wiesław Godzic</autor>
<cena>32.00</cena>
</book>
wtedy na stronie php zamiast tytulu pojawia sie tylko cudzyslow i nic wiecej.
probowalem funkcji str_replace, htmlspecialchars, htmlentities, ale nic z tego.
sam parser wyglada tak:
<?php
if(! ($fp = fopen("http://www.lideria.pl/partner/xml/getopisy?pin=xxxxxx&bk1=442","r"))) die ("Nie można otworzyć pliku XML!"); $book_counter = 0;
$xml_current_tag_state = '';
function startElementHandler($parser, $element_name, $element_attribs)
{
global $xml_current_tag_state; if($element_name == "BOOK")
{$book_data[$book_counter]["nr"] = $element_attribs["NR"];}
else
{$xml_current_tag_state = $element_name;}
}
function endElementHandler($parser, $element_name)
{
global $xml_current_tag_state; $xml_current_tag_state = '';
if($element_name == "BOOK")
{ $book_counter++; }
}
function characterDataHandler($parser, $data)
{
global $xml_current_tag_state; if($xml_current_tag_state == '')
retrurn;
if($xml_current_tag_state == "TYTUL")
{ $book_data[$book_counter]["tytul"] = $data; }
if($xml_current_tag_state == "AUTOR")
{ $book_data[$book_counter]["autor"] = $data; }
if($xml_current_tag_state == "CENA")
{ $book_data[$book_counter]["cena"] = $data; }
}
if(!($xml_parser = xml_parser_create
())) die ("Nie można utworzyć analizatora XML!"); xml_set_element_handler($xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler($xml_parser, "characterDataHandler");
while($data = fread($fp, 4096
)) {
if(!xml_parse
($xml_parser, $data, feof($fp))) { break; }
}
xml_parser_free($xml_parser);
?>
moze jakis dobry czlowiek bedzie w stanie pomoc :-)