31.05.2005 Staf2x - Tecfa - UniGE 1
Traitement XML avec DOM
PHP 5 – XML – DOM
Dajana Kapusova – TECFA - UNIGE
31.05.2005 Staf2x - Tecfa - UniGE 2
DOM (Document Object Model)
API pour décomposer le contenu d’un document HTML ou XML en une arborescence de nœuds
recommandation du W3C (norme du web), consiste à représenter en mémoire le contenu d’un document HTML ou XML sous la forme d’une arborescence d’objets
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
31.05.2005 Staf2x - Tecfa - UniGE 3
DOM
spécifie des méthodes et propriétés permettant de:créermodifierextraire
des données de n’importe quel élément ou contenu d’un document XML
31.05.2005 Staf2x - Tecfa - UniGE 4
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)
31.05.2005 Staf2x - Tecfa - UniGE 5
PHP 5
Fonctions DOMhttp://php.morva.net/manual/fr/ref.dom.php
Fonctions DOM XMLhttp://php.morva.net/manual/fr/ref.domxml.php
31.05.2005 Staf2x - Tecfa - UniGE 6
Les classes 1/5
domNode classe de base dont héritent presque toutes les
autres représente un nœud de l’arbre et possède toutes
les propriétés et méthodes nécessaires pour le manipuler
domDocument est la « face visible de l’iceberg » (utilisée le plus) classe qui construit l’arbre et qui nous permet de le
manipuler
31.05.2005 Staf2x - Tecfa - UniGE 7
Les classes 2/5
domElement représente un élément d’un document Xml, càd une
balise domDocumentFragment
permet de manipuler un document Xml non complet domAttr
représente un attribut d’une balise domProcessingInstruction
représente une « processing instruction », càd un bout de code contenu dans le document Xml
31.05.2005 Staf2x - Tecfa - UniGE 8
Les classes 3/5
domEntity représente une entité
domEntityReference représente une référence sur une entité
domDocumentType représente l’attribut optionnel doctype du document
Xml contient les éventuelles notations définies
domCharacterData permet la manipulation de données textuelles au
sein d’un document Xml
31.05.2005 Staf2x - Tecfa - UniGE 9
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 d’un document Xml
domNotation représente une notation dans une Dtd
31.05.2005 Staf2x - Tecfa - UniGE 10
Les objets 5/5
domException gère les exceptions Dom
domImplementation décrit une implémentation et donne un moyen de
l’interroger 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
31.05.2005 Staf2x - Tecfa - UniGE 11
XML et représentation DOM
<artist id=“1”>
<name>The Rolling Stones</name>
</artist>
31.05.2005 Staf2x - Tecfa - UniGE 12
Exemple music.xml
<music><artist id="1">
<name>The Rolling Stones</name><albums>
<title>Exile On Main Street</title></albums>
</artist><artist id="2">
<name>Aimee Mann</name><albums>
<title>I'm With Stupid</title><title>Bachelor No. 2</title>
</albums></artist>
</music>
31.05.2005 Staf2x - Tecfa - UniGE 13
Fichiers source
http://tecfa.unige.ch/staf/staf-j/kapusova/staf2x/
music.xml – fichier XMLmusic.php – exemple 1, 2 et 3music.phps – code sourcemusicnew.php – exemple 4musicnew.phps – code sourcemusicnew.xml – est crée avec l’exemple 4xml_dom.ppt – cette présentation ppt
31.05.2005 Staf2x - Tecfa - UniGE 14
Lire XML avec DOM
domDocument class - construit l’arbre et nous permet de le manipuler
création de l’objet$music = new domDocument;
éliminer les espaces blancs$music->preserveWhiteSpace = false;
charger un document à partir d’un fichier$music->load(“music.xml”);
charger un document à partir d’une chaine de caractère$dom->loadXml(“<musique>…</musique>”);
31.05.2005 Staf2x - Tecfa - UniGE 15
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émentsforeach ($names as $name) {
// firstChild - le premier enfant de ce noeud// nodeValue - la valeur de ce noeud, dépendant de son typeprint $name->firstChild->nodeValue."<br/>";
}
31.05.2005 Staf2x - Tecfa - UniGE 16
Afficher les enfants d’un noeud
Exemple 2: imprimer tous les titres$albums =$music-
>getElementsByTagName('albums');foreach ($albums as $album) {
print "<ul>";// childNodes - un DOMNodeList qui contient tous les enfants de ce noeudforeach ($album->childNodes as $title) {print "<li>".$title->firstChild->nodeValue."</li>";}print "</ul>";
}
31.05.2005 Staf2x - Tecfa - UniGE 17
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 "<table border='1'>\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 "<tr><td>$name</td>";print "<td>".$title->firstChild->nodeValue
."</td></tr>\n";}
}print "</table>\n";
31.05.2005 Staf2x - Tecfa - UniGE 18
Modification d’un élément
DOMCharacterData->appendData()ajoute la chaîne à la fin des données dans le noeud
DOMCharacterData->deleteData()supprime une sous-chaîne dans le noeud
DOMCharacterData->insertData()insère une chaîne à la position spécifiée d'unité 16-bit
DOMCharacterData->replaceData()remplace une sous-chaîne dans le noeud DOMCharacterData node
DOMCharacterData->substringData()extrait un morceaux de données dans le noeud
31.05.2005 Staf2x - Tecfa - UniGE 19
Ecrire dans XML
ajouter de nouvelles informations dans le documentcréer la nouvelle information
$newAlbum = new domElement('title', 'Sticky Fingers');
ajouter la donnée au bon endroit de l’arbrevoir Exemple 4: ajouter un nouvel album
31.05.2005 Staf2x - Tecfa - UniGE 20
Exercice
travailler avec la page travaux…. à préciser …
31.05.2005 Staf2x - Tecfa - UniGE 21
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
Borde, Marhin et Thevenet, PHP 5. Créez votre site web dynamique, Micro Application, 2004
Document Object Model (DOM) définition, D.K.Schneider
Top Related