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 .= '<rss version="2.0">';
3 $xml .= '<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.