Creer un flux RSS avec DOMDocument

12 09 12

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 .= ''; 
 $xml .= ''; 
 $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.

Continue la lecture, ces articles pouront peut être t'intéresser :

Veux-tu recevoir des astuces exclusives ? Laisse moi ton e-mail



Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Pseudo *

Please copy the string SVsD6c to the field below:

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  1. Hello,

    Je te remercie pour cette correction du tuto flux rss. J’en étais à mon 2ème tutoriel qui ne fonctionnait pas. J’avais très bien compris le principe de création du fichier xml mais je préférais passer par un tuto en pensant que j’allais gagner du temps.

    Autre amélioration de ce tuto dans mon cas : Le titre et la description du flux dans le channel, les accents ne s’affichaient pas correctement. J’ai ajouté html_entity_decode() et c’est parfait.

    Merci !

    1. Y à pas de soucis, si je peut aider je le fait 😉

87% de mes meilleures astuces, conseils, formations et outils je les partages gratuitement par mail avec ma communauté. Productivité, automatisation, design, SEO et bien plus encore.

Je te propose de recevoir en premier lieu 21 outils incroyables qui pourraient changer ta vie.

Je ne partage pas tes informations avec des tiers.