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 .= '';
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);
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 :
// 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.
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 !
Y à pas de soucis, si je peut aider je le fait
[...] "Depuis un certains temps, j'utilise DOMDocument pour générer mes fichiers XML. Je vais donc vous montrer la voie pour générer un Flux RSS à l'aide de cette librairie." [...]