Ciao a tutti
ho un problema con questo parser XML
Codice PHP:
$filename="file che restituisce un xml da analizzare";
if( ! ($fp = fopen( "$filename" , "r" )) )die("Couldn't open xml file!");
$person_counter = 0;
$person_data = array();
$xml_current_tag_state = '';
function startElementHandler( $parser, $element_name, $element_attribs ) {
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = $element_name;
}
function endElementHandler( $parser, $element_name ) {
global $person_counter;
global $person_data;
global $xml_current_tag_state;
$xml_current_tag_state = '';
if( $element_name == "MATCH" ) {
$person_counter++;
}
}
function characterDataHandler( $parser , $data ) {
global $person_counter;
global $person_data;
global $xml_current_tag_state;
if( $xml_current_tag_state == '' ) return;
if( $xml_current_tag_state == "ITEM" ) $person_data[$person_counter]["item"] = $data;
if( $xml_current_tag_state == "FID" ) $person_data[$person_counter]["fid"] = $data;
if( $xml_current_tag_state == "PRODUCTNAME" ) $person_data[$person_counter]["productname"] = $data;
if( $xml_current_tag_state == "DESCRIPTION" ) $person_data[$person_counter]["description"] = $data;
if( $xml_current_tag_state == "BRAND" ) $person_data[$person_counter]["brand"] = $data;
if( $xml_current_tag_state == "MODEL" ) $person_data[$person_counter]["model"] = $data;
if( $xml_current_tag_state == "YEAR" ) $person_data[$person_counter]["year"] = $data;
if( $xml_current_tag_state == "NOTE" ) $person_data[$person_counter]["note"] = $data;
if( $xml_current_tag_state == "ARTICLENO" ) $person_data[$person_counter]["articleno"] = $data;
//se vuoi aggiungere altri campi xml
//if( $xml_current_tag_state == "NUOVO_TAG_XML" ) {
//$person_data[$person_counter]["codice"] = $data;
//}
}
if( !($xml_parser = xml_parser_create()) ) die("Couldn't create XML parser!");
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; // get out of while loop if we're done with the file
}
}
xml_parser_free($xml_parser);
All'interno della stringa descrizione (in qualche caso) trovo una parola del tipo ("-thread).
Questo provoca un bel problema... ovvero tutto il resto della descrizione non viene restituito, ma solamente -thread).
A rigor di logica credo che il problema sia il doppio slash... tuttavia non sono riuscito in alcun modo ad eliminare questo problema.
Qualcuno mi può aiutare?? grazie