salve a tutti,
sto usando queste funzioni per parsare il file xml
... se inserisco il tutto in una function mi crea qualche problema con la variabile globa.. come posso risolvere?codice://funzione che mi ritorna un file xml in array //var $struct = array(); $xml_parser = xml_parser_create(); function startElement($parser, $name, $attrs) { global $struct; $tag = array("name"=>$name,"attrs"=>$attrs); array_push($struct,$tag); } function data($parser, $data) { global $struct,$i; if(trim($data)) { $struct[count($struct)-1]['data']=$data; } } function endElement($parser, $name) { global $struct; $struct[count($struct)-2]['child'][] = $struct[count($struct)-1]; array_pop($struct); } xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "data"); //or //$file = url; $xmlFile='prova.xml'; $parse = xml_parse($xml_parser,file_get_contents($xmlFile)); if(!$parse) { die("XML parsing error"); } xml_parser_free($xml_parser); print_r($datimodulo = $struct[0][child]);
codice:function xmlParser($xmlFile){ //funzione che mi ritorna un file xml in array //var $struct = array(); $xml_parser = xml_parser_create(); function startElement($parser, $name, $attrs) { global $struct; $tag = array("name"=>$name,"attrs"=>$attrs); array_push($struct,$tag); } function data($parser, $data) { global $struct,$i; if(trim($data)) { $struct[count($struct)-1]['data']=$data; } } function endElement($parser, $name) { global $struct; $struct[count($struct)-2]['child'][] = $struct[count($struct)-1]; array_pop($struct); } xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "data"); //or //$file = url; $parse = xml_parse($xml_parser,file_get_contents($xmlFile)); if(!$parse) { die("XML parsing error"); } xml_parser_free($xml_parser); return $datimodulo = $struct[0][child]; }

Rispondi quotando