21
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 1 Traitement XML avec DOM PHP 5 – XML – DOM Dajana Kapusova – TECFA - UNIGE

Embed Size (px)

Citation preview

Page 1: 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 1

Traitement XML avec DOM

PHP 5 – XML – DOM

Dajana Kapusova – TECFA - UNIGE

Page 2: 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

Page 3: 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 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

Page 4: 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 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)

Page 5: 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 5

PHP 5

Fonctions DOMhttp://php.morva.net/manual/fr/ref.dom.php

Fonctions DOM XMLhttp://php.morva.net/manual/fr/ref.domxml.php

Page 6: 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 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

Page 7: 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 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

Page 8: 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 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

Page 9: 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 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

Page 10: 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 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

Page 11: 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 11

XML et représentation DOM

<artist id=“1”>

<name>The Rolling Stones</name>

</artist>

Page 12: 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 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>

Page 13: 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 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

Page 14: 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 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>”);

Page 15: 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 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/>";

}

Page 16: 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 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>";

}

Page 17: 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 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";

Page 18: 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 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

Page 19: 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 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

Page 20: 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 20

Exercice

travailler avec la page travaux…. à préciser …

Page 21: 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 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