Questo Nuovo Articolo realizzato da me come Programmatore PHP, vi illustra come leggere un XML con PHP
In questo Particolare caso vogliamo leggere solo un elemento all'interno di un nodo, e come esempio ho utilizzato la sitemap del mio sito, in modo da leggerne solo il valore LOC del nodo URL
PHP rende possibile ad un Programmatore PHP l'interazione con file XML grazie ad alcune funzioni che mette a disposizione, tali funzioni consentono la lettura degli elementi di un file XML.
All'interno di questo Script realizzato abbiamo utilizzato le funzioni xml_set_element_handler, xml_set_character_data_handler e xml_parser_free di cui potete leggere i relativi riferimenti.
<?php
//File da includere
$filename="sitemap.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"] . "<br />";
}
?>
In questo Script PHP un Programmatore PHP può modificare il valore che deve essere letto oppure aumentare i campi di lettura modificando la riga if( $xml_stato_tag_corrente == "LOC" ) e aggiungendo altri valori, al fine di leggere un intero file XML. Di questo Script è possibile Guardare un esempio che legga tutti i collegamenti contenuti nella mia Sitemap
.Nessun commento Presente.