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.
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.