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 version="1.0" encoding="UTF-8"?>';
$xml .= '<rss version="2.0">';
$xml .= '<channel>';
$xml .= '
<title>
Titre du flux
</title>';
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.