Staf2x - Tecfa - UniGE 1 Traitement XML avec DOM PHP 5 – XML – DOM Dajana Kapusova – TECFA - UNIGE
Staf2x - Tecfa - UniGE2 DOM (Document Object Model) API pour décomposer le contenu dun document HTML ou XML en une arborescence de nœuds recommandation du W3C (norme du web), consiste à représenter en mémoire le contenu dun document HTML ou XML sous la forme dune arborescence dobjets basé sur la bibliothèque libxml2 (parseur XML open source du projet GNOME) avantage: création de nouveaux documents, ajouts déléments inconvénient: complexe, verbeux, parfois long pour faire des choses simples
Staf2x - Tecfa - UniGE3 DOM spécifie des méthodes et propriétés permettant de: créer modifier extraire des données de nimporte quel élément ou contenu dun document XML
Staf2x - Tecfa - UniGE4 DOM définit les types: de relation entre chaque nœud des directions de déplacement dans une arborescence XML propriétés: parentNode (père), childNodes (enfants) firstChild (premier enfant), lastChild (dernier enfant) previousSibling (frère précédent), nextSibling (frère suivant)
Staf2x - Tecfa - UniGE5 PHP 5 Fonctions DOM Fonctions DOM XML
Staf2x - Tecfa - UniGE6 Les classes 1/5 domNode classe de base dont héritent presque toutes les autres représente un nœud de larbre et possède toutes les propriétés et méthodes nécessaires pour le manipuler domDocument est la « face visible de liceberg » (utilisée le plus) classe qui construit larbre et qui nous permet de le manipuler
Staf2x - Tecfa - UniGE7 Les classes 2/5 domElement représente un élément dun document Xml, càd une balise domDocumentFragment permet de manipuler un document Xml non complet domAttr représente un attribut dune balise domProcessingInstruction représente une « processing instruction », càd un bout de code contenu dans le document Xml
Staf2x - Tecfa - UniGE8 Les classes 3/5 domEntity représente une entité domEntityReference représente une référence sur une entité domDocumentType représente lattribut optionnel doctype du document Xml contient les éventuelles notations définies domCharacterData permet la manipulation de données textuelles au sein dun document Xml
Staf2x - Tecfa - UniGE9 Les classes 4/5 domComment représente un commentaire domText permet une manipulation du texte un peu plus poussée domCDATASection permet de manipuler les sections CDATA dun document Xml domNotation représente une notation dans une Dtd
Staf2x - Tecfa - UniGE10 Les objets 5/5 domException gère les exceptions Dom domImplementation décrit une implémentation et donne un moyen de linterroger sur ces fonctionnalités domNodeList encapsule une liste de domNode domNamedNodeMap encapsule une liste de domNode, en les rendant cette fois accessibles par leur nom
Staf2x - Tecfa - UniGE11 XML et représentation DOM The Rolling Stones
Staf2x - Tecfa - UniGE12 Exemple music.xml The Rolling Stones Exile On Main Street Aimee Mann I'm With Stupid Bachelor No. 2
Staf2x - Tecfa - UniGE13 Fichiers source music.xml – fichier XML music.php – exemple 1, 2 et 3 music.phps – code source musicnew.php – exemple 4 musicnew.phps – code source musicnew.xml – est crée avec lexemple 4 xml_dom.ppt – cette présentation ppt
Staf2x - Tecfa - UniGE14 Lire XML avec DOM domDocument class - construit larbre et nous permet de le manipuler création de lobjet $music = new domDocument; éliminer les espaces blancs $music->preserveWhiteSpace = false; charger un document à partir dun fichier $music->load(music.xml); charger un document à partir dune chaine de caractère $dom->loadXml( … );
Staf2x - Tecfa - UniGE15 Afficher les éléments Exemple 1: imprimer les noms de tous les artistes // récupérer les éléments par le nom de leurs tags $names = $music->getElementsByTagName('name'); // imprimer les éléments foreach ($names as $name) { // firstChild - le premier enfant de ce noeud // nodeValue - la valeur de ce noeud, dépendant de son type print $name->firstChild->nodeValue." "; }
Staf2x - Tecfa - UniGE16 Afficher les enfants dun noeud Exemple 2: imprimer tous les titres $albums =$music- >getElementsByTagName('albums'); foreach ($albums as $album) { print " "; // childNodes - un DOMNodeList qui contient tous les enfants de ce noeud foreach ($album-> childNodes as $title) { print " ".$title->firstChild- >nodeValue." "; } print " "; }
Staf2x - Tecfa - UniGE17 domElement Exemple 3: imprimer les artistes et leurs titres // documentElement - c'est un attribut de convenance qui permet l'accès direct à l'enfant d'un noeud qui est l'élément document de ce document. $artists = $music->documentElement; print " \n"; foreach ($artists->childNodes as $artist) { $names = $artist->getElementsByTagName('name'); // item - retourne un noeud selon son index $name = $names->item(0)-> firstChild->nodeValue; $titles =$artist->getElementsByTagName('title'); foreach ($titles as $title) { print " $name "; print " ".$title->firstChild->nodeValue." \n"; } print " \n";
Staf2x - Tecfa - UniGE18 Modification dun élément DOMCharacterData->appendData() ajoute la chaîne à la fin des données dans le noeud DOMCharacterData->appendData() DOMCharacterData->deleteData() supprime une sous-chaîne dans le noeud DOMCharacterData->deleteData() DOMCharacterData->insertData() insère une chaîne à la position spécifiée d'unité 16-bit DOMCharacterData->insertData() DOMCharacterData->replaceData() remplace une sous-chaîne dans le noeud DOMCharacterData node DOMCharacterData->replaceData() DOMCharacterData->substringData() extrait un morceaux de données dans le noeud DOMCharacterData->substringData()
Staf2x - Tecfa - UniGE19 Ecrire dans XML ajouter de nouvelles informations dans le document créer la nouvelle information $newAlbum = new domElement('title', 'Sticky Fingers'); ajouter la donnée au bon endroit de larbre voir Exemple 4: ajouter un nouvel album
Staf2x - Tecfa - UniGE20 Exercice travailler avec la page travaux …. à préciser …
Staf2x - Tecfa - UniGE21 Références PHP Magazine, PHP 5 Meets XML and the DOM, An Intro to PHP 5's rewritten DOM, XSLT, and XPath extensions, by Adam Trachtenberg PHP Magazine, PHP 5 Meets XML and the DOM, An Intro to PHP 5's rewritten DOM, XSLT, and XPath extensions, by Adam Trachtenberg Borde, Marhin et Thevenet, PHP 5. Créez votre site web dynamique, Micro Application, 2004 Document Object Model (DOM) définition, D.K.Schneider Document Object Model (DOM) définition, D.K.Schneider