Nel caso di nodi interni il discorso è un po' + complicato, è necessario complicare la struttura dell'array che memorizza il contenuto dei nodi parsati:
$filename=".....xml";
if(!($fp = fopen("$filename" , "r")))
die("Non posso aprire il file");
$elenco_counter = 0;
$mediapoint = array();
$mediapoint[$elenco_counter] = 0;
$elenco_data = array();
$xml_current_tag_state = '';
function startElementHandler($parser, $element_name, $element_attribs)
{
global $elenco_counter;
global $elenco_data;
global $xml_current_tag_state;
$xml_current_tag_state = $element_name;
}
function endElementHandler($parser, $element_name)
{
global $elenco_counter;
global $prezzo;
global $elenco_data;
global $xml_current_tag_state;
$xml_current_tag_state = '';
if( $element_name == "ITEM" )
{
$elenco_counter++;
$prezzo[$elenco_counter] = 0;
}
}
function characterDataHandler($parser , $data)
{
global $elenco_counter;
global $prezzo;
global $elenco_data;
global $xml_current_tag_state;
if( $xml_current_tag_state == '' )
return;
...
if( $xml_current_tag_state == "MEDIAPOINTID" )
{
$elenco_data[$elenco_counter]["mediapointid" . $mediapoint[$elenco_counter]] = $data;
}