PHP e XML – Leggere i feed rss da link online

I feed rss sono un ottimo strumento di propagazione dell’informazione. Vengono usati nei blog, ma anche nei siti di base (grazie alla diffusione di cms come WordPress) e soprattutto dai siti aziendali. Le ditte che comprendono numerosi prodotti, infatti, lo mettono spesso a disposizione per essere letti dagli aggregatori oppure, al contrario, recuperano spesso le schede dei prodotti da vendere da un link rss esterno.

Se avete bisogno di leggere un feed rss dotato di una struttura xml abbastanza standard non avrete grandi difficoltà: bastano poche righe di codice.
Nell’esempio che vedremo sotto prenderò in esame i feed rss di www.onemind.it, che hanno una struttura ad albero molto semplice. Per ogni articolo presente, estrarremo e recupereremo link, titolo e descrizione, che potremo immagazzinare in apposite variabili php oppure utilizzare come più ci aggrada.

Naturalmente strutture più complesse richiedono qualche sforzo in più. In genere, comunque, troverete le informazioni di un prodotto internate in un unico nodo xml.
Lo script è scaricabile dal link qui sotto e liberamente personalizzabile.

Il nodo xml

La struttura base del feed rss sarà qualcosa simile al seguente esempio.
Ogni articolo sarà compreso tra i tag (nodo xml) “item”. Al suo interno troveremo i tag da estrarre: title, link, description.
Per comodità ho eliminato tutti gli altri sotto-nodi non necessari.

1
2
3
4
5
6
7
8
9
10
11
12
13
<item>
<title>
15 immagini sulla Shadow Art: l’arte illusoria con le ombre
</title>
<link>

http://www.manuelmarangoni.it/onemind/3790/15-immagini-sulla-shadow-art-larte-illusoria-con-le-ombre/

</link>
<description>
<![CDATA[
La shadow art mescola luce e oggetti comuni, come legni o fili di ferro, per creare opere realistiche fatte di ombra. Gli autori migliori e le loro immagini.
]]>
</description>
</item>

Lo script per il recupero del feed

I commenti dovrebbe bastare per coprire i dubbi. Nella pratica, non facciamo altro che scorrere tutti i tag “item” e recuperare i suoi tag interni, immagazzinandolo in variabili. Da un punto di vista logico, potete identificare il nodo “item” come un array e i suoi tag interni come gli elementi da recuperare.


0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
//crea un nuovo oggetto XML DOM
$xmldom = new DOMDocument();

//carica il contenuto del feed presente al link indicato
$xmldom->load("http://www.manuelmarangoni.it/onemind/feed/");

//recupera il nodo rappresentato da <item>
$nodo = $xmldom->getElementsByTagName("item");

//scorre tutti i nodi <item> della pagina
for($i=0; $i<=$nodo->length-1; $i++){

	// Estraggo il contenuto dei singoli tag del nodo <item>
	$titolo = $nodo->item($i)->getElementsByTagName("title")->item(0)->childNodes->item(0)->nodeValue;
	$collegamento = $nodo->item($i)->getElementsByTagName("link")->item(0)->childNodes->item(0)->nodeValue;
	$descrizione = $nodo->item($i)->getElementsByTagName("description")->item(0)->childNodes->item(0)->nodeValue;

	// Stampo a video i risultati
	?>
	<p>
		<a href="<?php echo $collegamento;?>"><?php echo $titolo;?></a><br />
		<?php echo $descrizione;?>
	</p>
<?php
}
Etichette:, ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *