Itek Developer

Programmare è arte

Visualizzare Feeds RSS 2.0 utilizzando PHP

rss icon DOMDocument e feeds RSS 2.0

In questo articolo vedrete come è possibile visualizzare in una  pagina web i feeds provenienti da un sito , da un  blog o dal risultato proveniente da un motore di ricerca.   Come molti sapranno i feeds RSS sono dei file XML con una struttura standardizzata che permette ai vari browser  di poterli leggere senza nessun problema di compatibilità. Per visualizzarne il contenuto ovviamente bisogna leggere il file XML , estrarre le informazioni e formattarle in modo che possano essere  visualizzate nel browser. Il PHP fornisce l’oggetto DOMDocument che è in grado di caricare i file XML ,  trasformali in una struttura ad albero , simile a quello utilizzato per memorizzare file e cartelle ,  e di  fornire potenti funzioni per leggerne il contenuto. L’immagine che segue mostra uno schema logico di come un file RSS viene salvato e strutturato nell’oggetto DOMDocument:

Schema logico di un file RSS in un DOMDocument

Schema logico di un file RSS in un DOMDocument

Nell’immagine ho riportato un esempio base di file RSS . Lo standard impone che nel file XML deve esserci necessariamente il tag <channel> , che è il nodo principale , e deve avere come sotto nodi i tags <title> , <link>  e <description>.  Il tag <title> contiene al suo interno il nome del sito o del blog che genera i feeds , il tag <link> ne contiene  l’indirizzo. Il tag <description> ha un ruolo particolare nei file RSS. Infatti è propio all’interno di esso che vengono memorizzate le informazioni da visualizzare nel browser ( codice html , links , immagini , testo , ecc…).   All’interno del tag <channel> ci sono gli items. Il numero di items varia  da (0) ad un numero variabile (n). Come potete vedere nella figura la struttura di un item è simile a quella del canale ( <channel> ) ma non può contenere altri items. Un item , all’interno del canale  , rappresenta una sorta di unità informativa riguardo un certo argomento. Per fare un esempio , se provate a leggere il canale RSS della CNN , troverete una serie di articoli , ognuno dei quali fa riferimento ad una particolare notizia e ognuno di essi è un item all’interno del file XML.  Lo scopo di questo articolo non vuole essere quello di entrate nel dettaglio delle  specifiche RSS. Se avete bisogno di ulteriori informazioni vi consiglio di visitare questo link .

Passiamo ad analizzare il codice PHP . Come accennato precedentemente andremo ad utilizzare l’oggetto DOMDocument , all’interno del quale verrà caricato i file XML che contiene i feeds. Per fare ciò l’oggetto DOMDocument mette a disposizione la  funzione load(‘url’).  Il parametro url rappresenta il percorso nel quale il file XML si trova. Nell’immagine che segue potete vedere la parte di codice che esegue quanto appena descritto :

Parte 1 - Creazione e caricamento del DOMDocument

Parte 1 - Creazione e caricamento del DOMDocument

 

Nella variabile $xml memorizziamo l’indirizzo dal quale leggere il file e che verrà utilizzata come parametro per la funzione load(‘url) . Nel caso specifico la variabile fa riferimento ai feeds del mio blog Blogger. Alla riga 02 dichiariamo la variabile $xmlDoc e ad esso associamo un’istanza dell’oggetto DOMDocument. Di seguito alla riga 11 con la funzione load($xml)  andiamo a caricare il file contenuto all’indirizzo memorizzato nella variabile $xml.

A questo punto ,  nella variabile xmlDoc , abbiamo  l’oggetto DOMDocument che contiene il nostro file XML . Ora dobbiamo andare a leggere i dati  per poi creare del codice html in modo che possano essere visualizzati nel browser. Ecco il codice :

Parte 2 - Lettura dei dei dati e visualizzazione degli stessi.

Parte 2 - Lettura dei dei dati e visualizzazione degli stessi.

 

Nella figura “Schema logico di un file RSS in un DOMDocument” abbiamo visto la corrispondenza tra un nodo del file xml (  Si definisce nodo tutto ciò che è racchiuso da due tags. Es.  <tag>…..</tag> ) e la sua rappresentazione all’interno di un DOMDocument. Tenendo presente questo schema ,  possiamo dire che la funzione $xmlDoc->getElemenstsByTagName(“channel”) va a selezionare tutte le “cartelle” di nome channel all’interno della “cartella” RSS 2.0. Con la successiva funzione ->item(0) si seleziona la prima cartella tra quelle trovate. Nel caso dei Feeds RSS 2.0 di canali “channel” ce n’e sempre uno solo. Quindi , considerando che la numerazione degli elementi selezionati dalla funzione getElementsByTagName parte da (0) , possiamo capire il perchè utilizziamo ->item(0) invece che  ->item(1). A questo punto, nella variabile $channel è come se avessimo il contenuto di tutta la “cartella” channel.  Alla righe 04 – 05 – 06 andiamo ad estrarre il contenuto dei nodi figli di “channel” e quindi i sottonodi “title” , “link” e “description” che all’interno dello schema del DOMDoucment nella figura , corrispondono alle sottocartelle di colore bianco( title , link , description ). Questi nodi non contengono altri nodi al loro interno ma i dati veri e propi che dovranno essere visualizzati dal browser. Per estrarne il contenuto si usa la funzione ->nodevalue dopo avere seleziona il nodo con la catena di funzioni $channel->getElementsByTagName(“tag”)->item(0) analogamente a quanto fatto alla riga 03.  Da notare che questa volta , la finzione getElemntsByTagsName() è applicata alla variabile $channel. Avendo ora memorizzati nelle variabili $channel_title , $channel_link ed $channel_desc le informazioni relative al canale possiamo procedere alla loro visualizzazione. Le istruzioni dalla riga 10 alla riga 13 inviano al browser una stringa di caratteri tramite la funzione echo() che come potete vedere è composta dal codice html e dalle variabili che contengono i dati del canale. Adesso passiamo alla visualizzazione degli items. Come prima cosa andiamo ad estrarre tutti i nodi item presenti nel DOMDocument e assegnamo il risultato alla variabile $items.  In $items quindi è come se avessimo le due cartelle item(0) e item(1) e cioè il primo nodo “item” ed il secondo presenti nel file xml. Dalla riga 22 alla riga 34 possiamo vedere il ciclo while che va a leggere e visualizzare il contenuto dei sottonodi “tittle” ,” link” e “description”  per ogni item.

Download il codice completo : phpRSSFeeds.php

 

 

 

 

 

 


 


Una risposta a “Visualizzare Feeds RSS 2.0 utilizzando PHP

  1. web sites like the pirate bay 14 settembre 2013 alle 21:50

    I have witnessed a solid sober man driven perfectly
    mad for now by two portions of so-called rum, supplied to him at one of
    these shanties. After targeting about two minutes and a half, he pulled
    the trigger. Much maudlin sentimentally, and empty declaration, have been written and discussed crime,
    and up against the punishment of criminals with death.

Lascia un commento