[PDF] Manipulation de XML avec DOM - PHP





Previous PDF Next PDF



2009_php-5-2_5-3-cours-et-exercices.pdf

que gérer les erreurs par le mécanisme des exceptions une des nouveautés de PHP 5. Angels Livre Page XIX Mercredi



PHP5 cours et exercices

Angels Livre Page VIII Mercredi 1. avril 2009 7:46 19 compte quelque deux mille pages au format Acrobat PDF. Pour savoir quels modules vous pouvez ...



Cours PHP Accéléré

12 juil. 2022 profondément remaniée lors du passage de PHP4.0 à PHP5.0 et s'inspire ... nombre de livres intitulés PHP 6 de sortir bien que cette version ...



PHP 5 avancé - 4e édition

PHP 5 avancé est un livre à garder à côté de son clavier. manipuler des images de créer des fichiers PDF



Programmation orientée objet et usage avancé de PHP5 & MySQL5

La maîtrise de la programmation PHP 5. ?. L'ensemble des nouveautés des classes. • Les vues sont généralement des templates HTML ou PDF ...



PHP 5 avancé - 4e édition

PHP 5 avancé est un livre à garder à côté de son clavier. manipuler des images de créer des fichiers PDF



PHP 5 – Structures de base

php. $livre = 'PHP 5 avancé'; echo str_word_count($livre); //affiche 3 ?> ?. Lister les mots d'une chaîne. –. En ajoutant un argument à 



Manipulation de XML avec DOM - PHP

php. $xml = "<livre><titre>PHP 5 avancé </titre></livre>";. $document = new DomDocument();. $document->loadXML($xml); ?> ? Chargement d'un fichier HTML. ? Il 



1 QUELQUES DEFINITIONS THEME AUTEUR année LIVRE

LIVRE. DEFINITIONS. Le regard des autres. J.P. SARTRE. « L'enfer c'est les autres ». SOCRATE. « Il vaut mieux une tête bien pleine qu'une tête bien faite ».



[PDF] PHP5 cours et exercices

G ponçon – Best practices PHP 5 Les meilleures pratiques de développement en PHP N°11676 2005 480 pages c piErrE DE gEyEr et g ponçon



[PDF] PHP 5 avancé - 4e édition

PHP 5 avancé est un livre à garder à côté de son clavier manipuler des images de créer des fichiers PDF de se connecter à des bases de données



[PDF] PHP 5 - livre gratuit

Ce cahier du programmeur propose une mise en pratique simple mais carac- téristique des fonctionnalités clés de PHP en matière de développement web qu'il s' 



(PDF) PHP5 Cours et exercices Serge Innocent - Academiaedu

Un cours idéal pour assimiler la syntaxe et les concepts objet de PHP 5 et s'initier au développement d'applications Web professionnelles Ce manuel 



(PDF) PHP 5 – Cours et exercices Corrigés des exercices du livre

Un cours idéal pour assimiler la syntaxe et les concepts objet de PHP 5 et s'initier au développement d'applications Web professionnelles Ce manuel 



[PDF] Cours de PHP 5 - Wikimedia Commons

12 mai 2008 · cd "C:\Program Files\Zend\Core\bin" php "C:\Web\online\http\tests\error php" Si vous avez déjà un serveur Web configuré avec PHP 



[PDF] 6e édition - fnac-staticcom

En ajoutant quelques lignes de PHP à une page HTML le serveur exécute les PHP Livre Page 1 Vendredi 30 mars 2012 11:37 11 Page 32 PHP 5 avancé 2



[PDF] Cours PHP Accéléré - Université dOrléans

8 fév 2023 · Tuto PHP en accéléré en pdf nombre de livres intitulés PHP 6 de sortir bien que cette version n'existera jamais ??ex php:5



[PDF] PHP 5°partie

PHP 5° PARTIE : LES COOKIES 1 Introduction 2 Les cookies et PHP données au format suivant : Ajouter un livre (lien vers remplir php)



[PDF] PHP 5 – Structures de base - Loria

1 PHP 5 – Structures de base Fonctions – Fonctions Chaînes Page 2 2 PHP 5 Les fonctions $livre = 'PHP 5 avancé'; echo strlen($livre); //renvoie 12

:
1

© A. Belaïd

PHP

Manipulation de XML avec DOM

2

© A. Belaïd

DOM

Introduction

DOM est une API standard :

Les méthodes et procédures de manipulation DOM sont exactement les mêmes dans tous les langages Vous pouvez passer d'un langage à l'autre sans avoir à apprendre plusieurs noms de fonctions et plusieurs API

© http://eusebius.developpez.com/php5dom/

3

© A. Belaïd

DOM

Structure générale

DOM représente l'arbre XML sous la forme d'objets et relations entre eux Aussi bien le document que chaque noeud devient un objet à part entière avec sa définition, ses propriétés et ses méthodes

Il devient alors facile de :

connaître les propriétés d'un objet lire des objets les modifier les enregistrer dans un fichier passer d'un objet à l'autre par une relation privilégiée 4

© A. Belaïd

Exemple :books.xml

Everyday

Italian

Giada De Laurentiis 2005 30.00 Harry Potter J K. Rowling 2005 29.99 XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99 Learning XML Erik T. Ray 2003

39.95

5

© A. Belaïd

L'arbre DOM correspondant

Les noeuds éléments sont

liés par des relations :parent, child, sibling 6

© A. Belaïd

L'arbre DOM correspondantD'autres relations (i.e. méthodes) : 7

© A. Belaïd

1. Les objets de l'extension DOM

Les objets de DOM

Les principales classes sont les suivantes :

DomNode - objet noeud :

- documents, éléments, noeuds textuels...

DomDocument - objet document

- (hérite de DomNode)

DomElement - objet élément

- (hérite de DomNode)

DomAttr - objet attribut

- (hérite de DomNode)

DomNodeList - objet liste de DomNodes

- (ce n'est pas un tableau PHP !)

© http://eusebius.developpez.com/php5dom/

8

© A. Belaïd

2. L'objet document

L'objet document représente l'arbre XML

Création d'un document

Il suffit d'instancier la classe DomDocument

Chargement des données XML

Il suffit d'utiliser la méthode load()

load('monfichier.xml');

© http://eusebius.developpez.com/php5dom/

9

© A. Belaïd

2. L'objet document

Chargement depuis une chaîne XML

PHP 5 avancé "; $document = new DomDocument(); $document->loadXML($xml);

Chargement d'un fichier HTML

Il est possible de charger un fichier HTML en DOM et de le manipuler comme si c'était du XML saveHTML(); $doc = new DOMDocument(); $doc->loadHTMLFile("filename.html"); print $doc->saveHTML();

© http://eusebius.developpez.com/php5dom/

10

© A. Belaïd

2. Le document DomDocument

Enregistrement d'un document XML

save('nouveauFichier.xml');

Enregistrement dans une variable

saveXML(); //saveXML() renvoie le contenu sous //la forme d'une chaîne de caractères

Exemple : load-save-xml.php

load('test.xml'); $dom->save('nouveauFichier.xml');

© http://eusebius.developpez.com/php5dom/

11

© A. Belaïd

3. Lire un document

Rechercher et récupérer un élément

Il y a plusieurs moyens pour trouver des éléments

Accéder à l'élément racine

load('fichier.xml'); $racine = $document->documentElement; 12

© A. Belaïd

3. Lire un document

Accéder au document depuis un noeud

La fonction inverse de l'attribut documentElements'appelle ownerDocument Il permet de récupérer l'objet document à partir d'un noeud quelconque load('monfichier.xml'); $racine = $document->documentElement; $document = $racine->ownerDocument; 13

© A. Belaïd

3. Lire un document

Description d'un noeud

Les noeuds sont des objets de la classe DomNode

On peut connaître le type d'un noeud à partir de son attribut propriété : nodeType

Il retourne un entier

14

© A. Belaïd

3. Lire un document

Description d'un noeud

Exemple

Alice"; $document = new DomDocument(); $document->loadXML($xml); //On se place au niveau du premier noeud $livre = $document->documentElement; echo $livre->nodeType; //Affiche 1 $texte = $livre->firstChild; echo $texte->nodeType; //Affiche 3 15

© A. Belaïd

3. Lire un document

Description d'un noeud

Nom d'un noeud :

deux attributs de DomNode : nodeNameet tagName

Exemple

Alice"; $document = new DomDocument(); $document->loadXML($xml); $livre = $document->documentElement; echo $livre->nodeName; //Affiche livre echo $livre->firstChild->nodeName; //Affiche #text 16

© A. Belaïd

3. Lire un document

Contenu d'un noeud :

S'obtient avec l'attribut : nodeValue

Attention, un élément n'a pas de valeur, ce sont éventuellement ses fils, de type noeuds de texte, qui en ont

Exemple : dom1.php

Alice"; $document = new DomDocument(); $document->loadXML($xml); $livre = $document->documentElement; echo $livre->nodeName; //Affiche livre echo $livre->firstChild->nodeValue; //Affiche Alice $type = $livre->getAttributeNode('type'); echo $type->nodeValue; //Affiche conte 17

© A. Belaïd

3. Lire un document

Navigation dans l'arbre

Liste des noeuds

Dans les recherches futures, on va récupérer les noeuds de l'arbre XML dans une liste : objet de type : DomNodeList

On peut parcourir cette liste avec foreach()

Exemple

$nodeList; //objet de type DomNodeList;

Foreach($nodeList as $node){

Print_r($node);

On peut également accéder à un item particulier à l'aide de la méthode : item()et d'un index numérique $nodeList->item(0); //Premier noeud de la liste La quantité de noeuds dans une liste peut être récupérée avec l'attribut length de l'objet DomNodeList echo "Il y a ", $node->childNodes->length, " noeuds fils " ; 18

© A. Belaïd

3. Lire un documentNavigation dans l'arbre

Noeuds fils

La liste des noeuds fils d'un noeud peut être connue via l'attribut : childNodes du noeud père. L'objet renvoyé est un objet de type DomNodeList

Exemple : dom-fils.php

PHP 5E. DC.

PdG";

$document = new DomDocument(); $document->loadXML($xml); $livre = $document->documentElement; //Affichage des fils de $livre foreach($livre->childNodes as $node){ if($node->nodeType ==XML_ELEMENT_NODE){ echo 'Balise ', $node->tagName, '
'; echo 'Contenu : '; echo utf8_decode($node->firstChild->nodeValue),'
'; 19

© A. Belaïd

3. Lire un documentNavigation dans l'arbre

Noeuds fils

Il est possible d'accéder directement au premier ou au dernier noeud fils à l'aide des attributs : firstChildet lastChild

Exemple : dom-fils2.php

3 4 5 "; $document = new DomDocument(); $document->loadXML($xml); $versions = $document->documentElement; //On récupère le premier fils $trois = $versions->firsChild; //On récupère le dernier fils $cinq = $versions->lastChild;

Noeuds fils

On peut tester la présence de noeuds fils à l'aide de la méthode : hasChildNodes()

Exemple : dom-fils3.php

3 4 5 "; $document = new DomDocument(); $document->loadXML($xml); $versions = $document->documentElement; //Affichage des fils de $versions if($versions->hasChildNodes()){ foreach($versions->childNodes as $node){ if($node->nodeType == XML_ELEMENT_NODE){ echo $node->tagName, ' : '; echo utf8_decode($node->firstChild->nodeValue), '
'; 21

© A. Belaïd

3. Lire un documentNavigation dans l'arbre

Noeud parent

Le noeud parent d'un noeud peut être connu via l'attribut parentNode du noeuds fils. Il ,renvoie un objet de type

DomNode

$parent $fils = $parent->firstChild; $parent = $fils->parentNode; 22

© A. Belaïd

3. Lire un document

Navigation dans l'arbre

Noeuds frères

Deux possibilités :

- Soit remonter au père, puis lister les fils - Soit plus simplement : via les attributs previousSibling et nextSibling

Print_r($node->childNode->item(0));

Print_r($node->childNode->item(1));

//est équivalent à : $node = $node->childNodes->item(0);

Print_r($node);

Print_r($node->nextSibling);

23

© A. Belaïd

3. Lire un document

Recherche d'élément par le nom

DomDocument::getElementsByTagName()

Recherche dans tout le document

DomElement::getElementsByTagName()

Recherche dans les descendants de l'élément considéré

Ces fonctions retournent un objet DomNodeList

24

© A. Belaïd

3. Lire un document

Exemple de getElementsByTagName()

load("test.xml"); $listePays = $dom->getElementsByTagName('pays'); foreach($listePays as $pays) echo $pays->firstChild->nodeValue . "
"; echo "---
"; $europe = $dom->getElementsByTagName('europe')->item(0); $listePaysEurope = $europe->getElementsByTagName('pays'); foreach($listePaysEurope as $pays) echo $pays->firstChild->nodeValue . "
"; 25

© A. Belaïd

3. Lire un document

getElementsByTagName.php

Résultat :

France

Belgique

Espagne

Japon Inde

Etats-Unis

Canada

Tunisie

Cameroun

France

Belgique

Espagne

26

© A. Belaïd

3. Lire un document

Lire les attributs

Modifier le fichier XML (à la main) pour ajouter des attributs donnant le régime politique des pays cités (on suppose que la DTD aura également été modifiée en conséquence, si l'on veut profiter de la validation) : France Belgique Espagne Japon Inde 27

© A. Belaïd

3. Lire un document

Lire les attributs par getAttribute : getAttribute.php getElementsByTagName("pays"); foreach($listePays as $pays) { echo $pays->nodeValue; if ($pays->hasAttribute("regime")) { echo " - " . $pays->getAttribute("regime"); echo "
"; Pour éviter les erreurs, vérifier l'existence de l'attribut avec la fonction hasAttribute()qui prend aussi le nom de l'attribut en paramètre, et qui renvoie un booléen qui dit si l'attribut est présent ou pas 28

© A. Belaïd

3. Lire un document

Lire par getAttribute

Résultat

France - republique

Belgique - monarchie constitutionnelle

Espagne - monarchie constitutionnelle

Japon - empire

Inde 29

© A. Belaïd

3. Lire un document

Lire les noeuds textuels

On l'a déjà vu, on peut récupérer la valeur d'un noeud textuel avec l'attribut nodeValue