Programmation Web DOM en PHP Jrme CUTRONA jerome
Programmation Web : DOM en PHP Jérôme CUTRONA jerome. cutrona@univ-reims. fr 19: 27: 35 Programmation Web 2020 -2021 1
INTRODUCTION 19: 27: 37 Programmation Web 2020 -2021 2
DOM = Document Object Model § API (Application Programming Interface) pour la manipulation de HTML / XML § Définit la structure logique des documents § Définit la façon d’y accéder, de la manipuler Créer des documents Parcourir leur structure Ajouter, effacer, modifier des éléments Ajouter, effacer, modifier leur contenu 19: 27: 38 Programmation Web 2020 -2021 3
Qu’est-ce que le DOM ? § § Représentation arborescente du document Modèle objet (structure + méthodes) Permet la manipulation du document Des implémentations : n n 19: 27: 39 Java. Script PHP Java … Programmation Web 2020 -2021 4
EN JAVA SCRIPT 19: 27: 40 Programmation Web 2020 -2021 5
Exemple XML DOM Java. Script <? xml version="1. 0" encoding="UTF-8" ? > <liste> <animal idani="AC 001 -03"> <noman>Aquilon</noman> <visites>1</visites> </animal> <animal idani="AC 001 -01"> <noman>Bobo</noman> <visites>3</visites> </animal> </liste> 19: 27: 43 Programmation Web 2020 -2021 6
Exemple XML DOM Java. Script liste ¶·· animal idani="AC 001 -03" ¶···· ¶·· visites noman ¶···· Aquilon 19: 27: 43 1 ¶ <? xml·version="1. 0" ······encoding="UTF-8"·? >¶ animal ¶ <liste> ¶·· idani="AC 001 -01" ··<animal·idani="AC 001 -03">¶ Aquilon</noman>¶ ¶···· ····<noman> ¶·· ····<visites>1</visites>¶ visites¶ noman··</animal> ··<animal·idani="AC 001 -01">¶ ¶···· ···· <noman>Bobo</noman>¶ ····<visites>3</visites>¶ Bobo ··</animal> 3 ¶ Programmation Web 2020 -2021 </liste>¶ 7
Exemple XML DOM Java. Script liste ¶···· ¶·· noman visites ¶···· Aquilon 19: 27: 49 ¶ ¶·· animal idani="AC 001 -03" load. XMLDoc(). document. Element animal idani="AC 001 -01" ¶···· noman visites ¶···· 1 Bobo . get. Elements. By. Tag. Name( 'animal') [0] get. Elements. By. Tag. Name (. get. Attribute ('idani') 'noman')[0]. first. Child 3 Programmation Web 2020 -2021 . node. Value 8
Exploiter des données au format XML en Java. Script § Objet XML : n get. Elements. By. Tag. Name( n) Collection de nœuds § Collection de nœuds (array en Java. Script) : n length nombre d'éléments n [x] accès au xéme élément § Nœud : n first. Child Premier fils n child. Nodes Collection de fils n has. Child. Nodes() Possède des fils ? n node. Value Valeur du nœud n node. Name Nom du nœud n get. Attribute(a) Valeur de l'attribut 19: 27: 57 Programmation Web 2020 -2021 9
EN PHP 19: 28: 01 Programmation Web 2020 -2021 10
DOM PHP § API DOM orientée objet en PHP § Principales classes : n n n DOMNode nœud DOMElement nœud de type élément (issu d’une balise) DOMText nœud de type texte (possède une valeur) DOMDocument nœud correspondant au document DOMNode. List collection de nœuds (cf. get. Elements. By. Tag. Name) § Permettent la lecture ou la création d’un fichier XML ou HTML § Utilise la table de caractères utf-8 iconv(string $in_charset, string $out_charset, string $str): string fonctions mb_* : Multibyte String Functions 19: 28: 03 Programmation Web 2020 -2021 11
Classe DOMNode § Nœud de l’arbre DOM § Principaux attributs : n n n 19: 28: 12 public public readonly string $node. Name ; string $node. Value ; readonly int $node. Type ; readonly DOMNode $parent. Node ; readonly DOMNode. List $child. Nodes ; readonly DOMNode $first. Child ; Programmation Web 2020 -2021 12
Classe DOMNode § Principales méthodes : n n n 19: 28: 15 DOMNode append. Child ( DOMNode $newnode ) bool has. Attributes ( void ) bool has. Child. Nodes ( void ) DOMNode insert. Before ( DOMNode $newnode [, DOMNode $refnode ] ) DOMNode remove. Child ( DOMNode $oldnode ) DOMNode replace. Child ( DOMNode $newnode , DOMNode $oldnode ) Programmation Web 2020 -2021 13
Classe DOMElement § § § Nœud balise de l’arbre DOM Hérite de DOMNode Principal attribut propre : n readonly public string $tag. Name ; § Principales méthodes propres : n n n 19: 28: 21 string get. Attribute ( string $name ) DOMNode. List get. Elements. By. Tag. Name ( string $name ) bool has. Attribute ( string $name ) bool remove. Attribute ( string $name ) DOMAttr set. Attribute ( string $name , string $value ) void set. Id. Attribute ( string $name , bool $is. Id ) Programmation Web 2020 -2021 14
Classe DOMDocument § § § Représente un document HTML ou XML entier Hérite de DOMNode Principales méthodes : n n n n n 19: 28: 22 bool load. HTMLFile ( string $ filename ) mixed load ( string $filename [, int $options = 0 ] ) string save. HTML ( void ) string save. XML ([ DOMNode $node [, int $options ]] ) DOMElement create. Element ( string $name [, string $value ] ) DOMAttr create. Attribute ( string $name ) DOMText create. Text. Node ( string $content ) DOMElement get. Element. By. Id ( string $element. Id ) DOMNode. List get. Elements. By. Tag. Name ( string $name ) Programmation Web 2020 -2021 15
Classe DOMNode. List § Collection de nœuds DOM § Résultat des recherches effectuées avec DOMNode. List get. Elements. By. Tag. Name ( string $name ) des classes DOMElement et DOMDocument § Implémente Traversable , Countable § Principal attribut : n readonly public int $length ; § Principale méthode : n 19: 28: 30 DOMNode item ( int $index ) Programmation Web 2020 -2021 16
PRÉCISIONS IMPORTANTES 19: 28: 32 Programmation Web 2020 -2021 17
Informations générales § Le DOM est une API générale, ne dépendant pas d’un langage § Les classes et méthodes sont très similaires quel que soit le langage utilisé § Les spécificités de chaque langage doivent cependant être respectés (syntaxe !) § Les fichiers XML ne sont pas forcément validés avant exploitation § Ne pas faire trop de suppositions quant à l’ordre des balises : get. Elements. By. Tag. Name 19: 28: 32 Programmation Web 2020 -2021 18
Le cas get. Elements. By. Tag. Name § Dans beaucoup de cas, la navigation dans le DOM se fera en cherchant des éléments à partir de leur nom § collection s get. Element By. Tag. Name(nom_élément) § Méthode de la classe noeud. DOM § Retourne TOUJOURS une collection = un tableau contenant 0 à n éléments § get. Element. By. Tag. Name sans « s » à « element » n’existe pas 19: 28: 36 Programmation Web 2020 -2021 19
- Slides: 19