Creer un flux RSS avec DOMDocument

Zourite

2 minutes

Qu’est ce que DOMDocument ?

DOMDocument est une librairie PHP, qui à fait son entrer avec PHP5. Cette librairie permet de créer ou de modifier un fichier XML ou HTML. DOMDocument est très semblable à Javascript aussi bien par le biais de ses fonctions ou par son fonctionement. Nous retrouvons donc le concept des noeuds ou encore la fameuse fonction getElementById().

Plus besoin de faire :

$xml = '';
 $xml .= '<rss version="2.0">'; 
 $xml .= '<channel>'; 
 $xml .= '


  Titre du flux
';

Il suffit d’écrire :

$file = new DOMDocument(“1.0”);
$root = $file->createElement(“rss”);
$root->setAttribute(“version”, “2.0”);
$root = $file->appendChild($root);
$element_channel = $file->createElement(“channel”);
$element_channel = $root->appendChild($element_channel);

Elephant PHPOk ! J’admets que c’est plus long de procéder ainsi, mais c’est plus sexy, le code est plus agréable à lire et la procédure de maintenance en est simplifier. Il faudra au préalable respecter certains concepts de la POO, pour réellement trouver un intérêt à utiliser cette librairie. Je pense que l’avantage principal de DOMDocument, ce situe dans le fait qu’on à plus besoin d’utiliser des fonctions tel que fwrite() ou fopen(), DOMDocument se charge de tout.

Comment faire un Flux RSS ?

C’est très simple ! Il suffit de lire le tuto de Baptiste Witch sur développez.net. Non, je déconne ! Enfin pas tout à fait ce tuto est très bien fait, sauf qu’il y à une erreur dans son script. J’ai eu droit à Fatal error: Call to a member function appendChild() on a non-object in. Donc on reprend depuis le début, téléchargez le fichier qu’il fourni à la fin de son tuto.

Modifiez la fonction createXML()

Remplacer :

// Création du noeud channel
$element_channel = $file->createElement(“channel”);//On crée un élément channel
$element_channel->setAttribute(“id”, “news”); //On donne un attribut id à notre channel
$element_channel = $root->appendChild($element_channel);//On ajoute cet élément à la racine

Par :

// Création du noeud channel
     $element_channel = $file->createElement(“channel”);//On crée un élément channel
     $element_channel = $root->appendChild($element_channel);//On ajoute cet élément à la racine
     $element_id = $file->createAttribute(“xml:id”);
     $element_id = $element_channel->appendChild($element_id);
     $element_idt = $file->createTextNode(“news”); //On donne un attribut id à notre channel
     $element_idt = $element_id->appendChild($element_idt);
     $element_idt = $element_channel->setIdAttribute(“xml:id”, true);

Voila ! Vous pouvez maintenant suivre le reste de son tuto.