salve a tutti,
sto usando queste funzioni per parsare il file xml
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]);
... se inserisco il tutto in una function mi crea qualche problema con la variabile globa.. come posso risolvere?
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];
}