natrafiłem na dziwną sytuację. Już wyczerpałem wszelkie pomysły na rozwiązanie.
Parsuje SAX'em plik o strukurze:
<?xml version="1.0" encoding='UTF-8'?> <PictureCollection> <MainPath>ble</MainPath> <Picture> <ID></ID> <PATH></PATH> <DESC></DESC> </Picture> <Picture> <ID></ID> <PATH></PATH> <DESC></DESC> </Picture> </PictureCollection>
Potrzebuję wydobyć ścieżkę i opis obrazka o konkretnym ID.
Napisałem funkcje:
// FUNKCJE SLUZACE DO WCZYTYWANIA DANYCH KONKRETNEGO OBRAZKU function dataHandler($parser, $data) { if($data==$currentPID) $insideTargetPicture = 1; $picPath = $data; $picDesc = $data; } $currentTag = $name; } function endElement($parser, $name) { $insideTargetPicture = 0; } function fillPictureData($id, &$url, &$desc) { $currentPID = $id; $insideTargetPicture = 0; $file = "./data/welcomePictures.xml"; $parser = xml_parser_create(); xml_set_element_handler($parser, "startElement", "endElement"); xml_set_character_data_handler($parser, "dataHandler"); xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); $url = $picPath; $desc = $picDesc; xml_parser_free($parser); }
Problem jest natury "autozerującej" się zmiennej globalnej
.
$picPath
Zmienna jest ładnie wypełniana w
w którym odczytywana jest pożądana wartość.
dataHandler
Jednak po zakończeniu parsowania, zmienna jest już pusta, mimo że w kodzie zmienia się tylko raz w
.
dataHandler
Jakieś pomysły?
:-)