I cookie permettono il funzionamento di alcuni servizi di questo blog. Utilizzando questi servizi, accetti l'utilizzo dei cookie da parte nostra. Ok Rifiuta

Attenzione: a breve questo blog verrà dismesso e sarà attivo il nuovo a questo indirizzo.

Analizzare e prendere dati da un file XML

Salve a tutti, oggi parliamo di come fare il parsing di un file xml preso da un url, ad esempio un feed RSS. Per chi non sa cos'é un feed rss, è un'unità di informazioni in linguaggio XML e viene utilizzato per distribuire contenuti, come notizie o altro, tra i siti e i sistemi web (es. news google), quindi possiamo usarli per prendere informazioni e incorporarle nei nostri sistemi web.

In questo caso faremo il parsing di un feed per un'applicazione in linguaggio PHP molto usato nelle applicazioni web per prendere news e contenuti che cambiano rapidamente nel tempo. Di solito i feed sono strutturati in tag <item> in cui dentro ci sono elementi che si ripetono ad esempio <title> e <link>:

<?xml version="1.0"?>
<rss version= "2.0">
<channel>
  <item>
    <title>Harry Potter e la pietra filosofale</title>
    <link>http://www.esempio.com/</link>
    <pubDate>12:46 pm</pubDate>
  </item>
  <item>
    <title>Il signore degli Anelli</title>
    <link>http://www.esempio.com/</link>
    <pubDate>12:46 pm</pubDate>
  </item>
</channel>

Vedendo la struttura sopra del feed, possiamo analizzarlo con determinate funzioni implementate nel PHP ad esempio:

$xmldom = new DOMDocument(); // qui inizializziamo la variabile $xmldom con le specifiche del DOM

$xmldom->load("http://www.repubblica.it/rss/politica/rss2.0.xml"); // carichiamo l'url da dove prenderemo il feed

$nodo = $xmldom->getElementsByTagName("item"); // immettiamo il tag che in questo caso separa gli elementi

for ($i=0; $i<2; $i++) // cicliamo per prendere i dati fra i tag
{
   $titolo = $nodo->item($i)->getElementsByTagName("title")->item(0)->childNodes->item(0)->nodeValue; // tag title
   $collegamento = $nodo->item($i)->getElementsByTagName("link")->item(0)->childNodes->item(0)->nodeValue; // tag link
   $data = $nodo->item($i)->getElementsByTagName("pubDate")->item(0)->childNodes->item(0)->nodeValue; // tag pubDate
                               
   echo "<div class=\"feed\">
   <h3><a target=\"_blank\" href=\"$collegamento\">$titolo</a></h3>
   <p>$data</p>
   </div>";
}


Infine quindi stamperemo le variabili $data, $collegamento e $titolo nell'HTML che conterranno i dati racchiusi fra i tag dell'XML iniziale.

I più letti

Seguici su Facebook

Seguici su Google+

Renzo Cappelli

miafoto

Sono un appassionato di informatica, mi dedico allo sviluppo web e alla gestione dei sistemi web-based: realizzo siti e progetto software gestionale per privati e aziende. Ho tanta passione per tutto quello che riguarda il web e le nuove tecnologie, lavoro bene in team e collaboro con aziende e professionisti di settore.

Commenti

NON CI SONO ANCORA COMMENTI.

Lascia il tuo commento