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 :

1 $xml = '<?xml version="1.0" encoding="UTF-8"?>';
2 $xml .= '&lt;rss version="2.0">'; 
3 $xml .= '&lt;channel>'; 
4 $xml .= '
5
6<title>
7  Titre du flux
8</title>';

Il suffit d’écrire :

1$file = new DOMDocument("1.0");
2$root = $file->createElement("rss");
3$root->setAttribute("version", "2.0"); 
4$root = $file->appendChild($root); 
5$element_channel = $file->createElement("channel"); 
6$element_channel = $root->appendChild($element_channel);

Ok ! 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 :

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

Par :

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

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