Programmation Web : DOM en PHP Jérôme CUTRONA 11:06:45 Programmation Web
I NTRODUCTION 211:06:45 Programmation Web
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 311:06:45 Programmation Web
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 : JavaScript JavaScript PHP PHP Java Java … 411:06:45 Programmation Web
E N J AVA S CRIPT 511:06:45 Programmation Web
Exemple XML DOM JavaScript Aquilon Aquilon 1 1 Bobo Bobo :06:45 Programmation Web
Exemple XML DOM JavaScript 711:06:45 Programmation Web liste animalidani="AC001-03" noman visites Aquilon1 animalidani="AC001-01" noman visites Bobo3 ¶·· ¶···· ¶···· ¶·· ¶···· ¶···· ¶····¶···· ¶ <liste> Aquilon Aquilon 1 1 Bobo Bobo 3 3 </liste>
Exemple XML DOM JavaScript 811:06:45 Programmation Web liste animalidani="AC001-03" noman visites Aquilon1 animalidani="AC001-01" noman visites Bobo3 ¶·· ¶···· ¶···· ¶·· ¶···· ¶···· ¶····¶···· ¶·· loadXMLDoc().documentElement.getElementsByTagName( 'animal') 'animal') [0].getAttribute('idani').getElementsByTagName( 'noman')[0].firstChild.nodeValue
Exploiter des données au format XML Objet XML : getElementsByTagName(n) Collection de nœuds getElementsByTagName(n) Collection de nœuds Collection de nœuds : length nombre d'éléments length nombre d'éléments [x] accès au x éme élément [x] accès au x éme élément Nœud : firstChild Premier fils firstChild Premier fils childNodes Collection de fils childNodes Collection de fils hasChildNodes() Possède des fils ? hasChildNodes() Possède des fils ? nodeValue Valeur du nœud nodeValue Valeur du nœud nodeName Nom du nœud nodeName Nom du nœud getAttribute(a) Valeur de l'attribut getAttribute(a) Valeur de l'attribut 911:06:45 Programmation Web
E N PHP 1011:06:45 Programmation Web
DOM PHP API DOM orientée objet en PHP Principales classes : DOMNode DOMNode DOMElement DOMElement DOMText DOMText DOMDocument DOMDocument DOMNodeList DOMNodeList Permettent la lecture ou la création d’un fichier XML ou HTML Utilise la table de caractères utf-8 utiliser iconv et les fonctions mb_* 1111:06:45 Programmation Web
Classe DOMNode Nœud de l’arbre DOM Principaux attributs : public readonly string $nodeName ; public readonly string $nodeName ; public string $nodeValue ; public string $nodeValue ; public readonly int $nodeType ; public readonly int $nodeType ; public readonly DOMNode $parentNode ; public readonly DOMNode $parentNode ; public readonly DOMNodeList $childNodes ; public readonly DOMNodeList $childNodes ; public readonly DOMNode $firstChild ; public readonly DOMNode $firstChild ; 1211:06:45 Programmation Web
Classe DOMNode Principales méthodes : DOMNode appendChild ( DOMNode $newnode ) DOMNode appendChild ( DOMNode $newnode ) bool hasAttributes ( void ) bool hasAttributes ( void ) bool hasChildNodes ( void ) bool hasChildNodes ( void ) DOMNode insertBefore ( DOMNode $newnode [, DOMNode $refnode ] ) DOMNode insertBefore ( DOMNode $newnode [, DOMNode $refnode ] ) DOMNode removeChild ( DOMNode $oldnode ) DOMNode removeChild ( DOMNode $oldnode ) DOMNode replaceChild ( DOMNode $newnode, DOMNode $oldnode ) DOMNode replaceChild ( DOMNode $newnode, DOMNode $oldnode ) 1311:06:45 Programmation Web
Classe DOMElement Nœud balise de l’arbre DOM Hérite de DOMNode Principal attribut propre : readonly public string $tagName ; readonly public string $tagName ; Principales méthodes propres : string getAttribute ( string $name ) string getAttribute ( string $name ) DOMNodeList getElementsByTagName ( string $name ) DOMNodeList getElementsByTagName ( string $name ) bool hasAttribute ( string $name ) bool hasAttribute ( string $name ) bool removeAttribute ( string $name ) bool removeAttribute ( string $name ) DOMAttr setAttribute ( string $name, string $value ) DOMAttr setAttribute ( string $name, string $value ) void setIdAttribute ( string $name, bool $isId ) void setIdAttribute ( string $name, bool $isId ) 1411:06:45 Programmation Web
Classe DOMDocument Représente un document HTML ou XML entier Hérite de DOMNode Principales méthodes : bool loadHTMLFile ( string $ filename ) bool loadHTMLFile ( string $ filename ) mixed load ( string $filename [, int $options = 0 ] ) mixed load ( string $filename [, int $options = 0 ] ) string saveHTML ( void ) string saveHTML ( void ) string saveXML ([ DOMNode $node [, int $options ]] ) string saveXML ([ DOMNode $node [, int $options ]] ) DOMElement createElement ( string $name [, string $value ] ) DOMElement createElement ( string $name [, string $value ] ) DOMAttr createAttribute ( string $name ) DOMAttr createAttribute ( string $name ) DOMText createTextNode ( string $content ) DOMText createTextNode ( string $content ) DOMElement getElementById ( string $elementId ) DOMElement getElementById ( string $elementId ) DOMNodeList getElementsByTagName ( string $name ) DOMNodeList getElementsByTagName ( string $name ) 1511:06:45 Programmation Web
Classe DOMNodeList Collection de nœuds DOM Résultat des recherches effectuées avec DOMNodeList getElementsByTagName ( string $name ) des classes DOMElement et DOMDocument Principal attribut : readonly public int $length ; readonly public int $length ; Principale méthode : DOMNode item ( int $index ) DOMNode item ( int $index ) 1611:06:45 Programmation Web
P RÉCISIONS IMPORTANTES 1711:06:45 Programmation Web
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 : getElementsByTagName 1811:06:45 Programmation Web
Le cas getElementsByTagName Dans beaucoup de cas, la navigation dans le DOM se fera en cherchant des éléments à partir de leur nom collection getElement s ByTagName(nom_élément) Méthode de la classe noeudDOM Retourne une collection = un tableau getElementsByTagName n’existe pas 1911:06:45 Programmation Web