il mio problema è il seguente : da un file index.php voglio leggere certi contenuti che sono salvati nel file post.xml
post.xml
codice:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<article>
<author>
pippo
</author>
<post>
contenuto del post di pippo
</post>
</article>
<article>
<author>
pluto
</author>
<post>
contenuto del post di pluto
</post>
</article>
</root>
girovagando per internet ho trovato questo script che dovrebbe leggere i tag xml e caricarli , e l'ho inserito in index.php :
Codice PHP:
<?php
//File da includere
$filename="post.xml";
//Se il file non esiste o non è raggiungibile
if(!($fp = fopen( "$filename" , "r")))
die("Il file non esiste o non può essere aperto.");
//Conto gli elementi che trovo all'interno dell xml
$contatore_persone = 0;
//Inizializzo l'array di elementi trovati
$elemento_xml = array();
//Inizializzo lo status a vuoto
$xml_stato_tag_corrente = '';
//Funzione per inizio del Nodo dell'elemento
function startElementHandler( $parser, $nome_elemento, $attributi_elemento ){
global $contatore_persone;
global $elemento_xml;
global $xml_stato_tag_corrente;
$xml_stato_tag_corrente = $nome_elemento;
}
//Funzione per la fine del Nodo dell'elemento, con incremento del contatore di elementi trovatati
function endElementHandler( $parser, $nome_elemento ){
global $contatore_persone;
global $elemento_xml;
global $xml_stato_tag_corrente;
$xml_stato_tag_corrente = '';
//Il nodo principale del XML che voglio leggere è specificato con l'etichetta seguente
if( $nome_elemento == "URL" )
$contatore_persone++;
}
//Funziona che recupera le informazioni del nodo se questo è uguale a LOC
function characterDataHandler( $parser , $data ){
global $contatore_persone;
global $elemento_xml;
global $xml_stato_tag_corrente;
//Se all'interno del nodo trov nulla esco dalla funzione
if( $xml_stato_tag_corrente == '' )
return;
//Se all'interno del nodo corrente trovo l'etichetta che mi interessa ne prendo le informazioni
if( $xml_stato_tag_corrente == "LOC" )
$elemento_xml[$contatore_persone]["loc"] = $data;
}
if( !($xml_parser = xml_parser_create()) )
die("Couldn't create XML parser!");
//Funzione che definisce l'inizio e la fine del nodo
xml_set_element_handler($xml_parser,'startElementHandler','endElementHandler');
//Funzione che definisce il nodo di cui vogliamo conoscere le informazioni
xml_set_character_data_handler($xml_parser, "characterDataHandler");
//Inizializzo la lettura del file fino a quando non finise il file
while( $data = fread($fp, 4096) ){
if( !xml_parse($xml_parser, $data, feof($fp)) ){
break;
}
}
xml_parser_free($xml_parser);
//Scorro l'arrei di informazioni recuperate al fine di mostrarle a video
for( $i=0 ; $i < $contatore_persone ; ++$i ){
echo $elemento_xml[$i]["loc"] . "
";
}
?>
ovviamente non parte .....consigli?