Ti giro il parser che ho usato io :


<html><body>
<?php
$filename="http://www.schede.xml";

if(!($fp = fopen("$filename" , "r")))
die("Non posso aprire il file");
$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 $elenco_data;
global $xml_current_tag_state;
$xml_current_tag_state = '';
if( $element_name == "ITEM" )
{
$elenco_counter++;
}
}

function characterDataHandler($parser , $data)
{
global $elenco_counter;
global $elenco_data;
global $xml_current_tag_state;
if( $xml_current_tag_state == '' )
return;
if( $xml_current_tag_state == "NOMECAMPO1" )
{
$elenco_data[$elenco_counter]["nomecampo1"] = $data;
}
if( $xml_current_tag_state == "NOMECAMPO2" )
{
$elenco_data[$elenco_counter]["nomecampo2"] = $data;
}


}

if( !($xml_parser = xml_parser_create()) )
die("Non riesco a creare il parser XML");

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;
}
}
//libero la memoria
xml_parser_free($xml_parser);


for($i=0 ; $i < $elenco_counter ; ++$i)
{

$idlocalita = $elenco_data[$i]["idliv1s"] . $elenco_data[$i]["idliv2s"] . $elenco_data[$i]["idliv3s"] . $elenco_data[$i]["idliv4s"] . $elenco_data[$i]["idliv5s"];

if ($elenco_data[$i]["nomecampo1"] == "io")
echo "campo1: " . $elenco_data[$i]["nomecampo1"] . "
\n";
echo "campo2: " . $elenco_data[$i]["nomecampo2"] . "
\n";

}

echo "
\n";


}

?>
</body></html>


fammi sapere se riesci ad usarlo.
Io sto cercando di usarlo e funziona ma a volte mi da problemi!