PHP XML DOM:Comment Utiliser Le DOM XML en PHP

Ce qui est le DOM ?


PHP et XML

Le W3C DOM fournit un ensemble standard d'objets pour les documents HTML et XML et une interface standard pour accéder à ces documents et les manipuler.

Le DOM du W3C est divisé en différentes parties (Core,XML et HTML) et en différents niveaux (DOM niveau 1/2/3):

* Core DOM - définit un ensemble standard d'objets pour tout document structuré
* XML DOM - définit un ensemble standard d'objets pour les documents XML
* HTML DOM - définit un ensemble standard d'objets pour les documents HTML


L'analyse Dom XML

Comme nous l’avons vu dans le chapitre précédent Pour lire,mettre à jour,créer et manipuler un document XML,nous avons besoin d'un analyseur XML.

Nous avons dit aussi qu’il y a deux principaux types d'analyseurs XML:

  •  Analyseur basé sur des événements:le document XML est vu comme une série d'événements. Lorsqu'un événement spécifique se produit,elle appelle une fonction pour la supporter. Nous avons vu un exemple de cet analyseur dans le chapitre précédent.
  • Analyseur basé sur l'arborescence:cet analyseur transforme un document XML dans une structure arborescente. Il analyse l'ensemble du document le stock en mémoire  et donne accès aux éléments de l'arborescence

L'analyseur DOM est un analyseur basé sur l'arborescence.

Regardez la fraction suivante du document XML:

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<de>Yasmine</de>

 

Le DOM XML voit le code XML ci-dessus comme une arborescence:

Niveau 1:XML Document

Niveau 2:Élément racine:< de >

Niveau 3:Élément texte ou chaîne de caractère:«Yasmine»


Installation

Les fonctions de l’analyseur XML DOM font partie de la base PHP. Il n'y a aucune installation nécessaire pour les utiliser.


Un fichier XML

Le fichier XML ci-dessous sera utilisé dans notre exemple:

Sélectionner le code

<?xml
version="1.0" encoding="UTF-8"?><note><pour>Sara</pour><de>Yasmine</de><titre>Invitation</titre><corps>Venez
me voir chez moi ce week-end! </corps></note> 

 

Chargement et affichage de fichier XML en PHP

Nous voulons initialiser l'analyseur XML pour charger le fichier xml et afficher son contenu:

Exemple Sélectionner le code

<html><body><?php$xmlDocument
= new DOMDocument();$xmlDocument->load("test.xml");
print $xmlDocument->saveXML();?></body></html>

 

Le résultat du code ci-dessus sera:

Sara Yasmine Invitation Venez me voir chez moi ce week-end!

Si vous sélectionnez « Afficher la source » dans la fenêtre du navigateur,vous verrez le code HTML suivant:

Sélectionner le code

	<html>
	<body>
	<?xml
	version="1.0" encoding="UTF-8"?>
	<note>
	<pour>Sara</pour>
	<de>Yasmine</de>
	<titre>Invitation</titre>
	<corps>Venez
	me voir chez moi ce week-end! </corps>
	</note>
	</body>
	</html>

 

L'exemple ci-dessus crée un objet DOMDocument et charge le fichier XML à partir de « test.xml » dedans en utilisant la fonction load().

Puis on utilise la fonction saveXML() pour mettre le document XML interne en une chaîne,ce qui nous permet de l’afficher.


Une boucle via XML

Nous voulons initialiser l'analyseur XML,chargez le XML et effectuer une boucle sur tous les éléments de l'élément < note >:

Exemple Sélectionner le code

<html><body><?php$xmlDocument
= new DOMDocument();$xmlDocument->load("test.xml"); $x =
$xmlDocument->documentElement;foreach
($x->childNodes AS $item){  print
$item->nodeName . " = " . $item->nodeValue .
"<br>"; 
}?></body></html>

 

Le résultat du code ci-dessus sera:

#text = 
pour = Sara
#text = 
de = Yasmine
#text = 
titre = Invitation
#text = 
corps = Venez me voir chez moi ce week-end! 
#text = 

Dans l'exemple ci-dessus,vous voyez qu'il y a des nœuds de texte vide entre chaque élément.

Lorsque XML génère,il contient souvent des espaces blancs entre les nœuds.L'analyseur XML DOM traite comme des éléments ordinaires,et si vous n'êtes pas conscience de leur existence,elles causent parfois des problèmes.

Mais si vous éliminez tous les retours à la ligne dans le fichier xml comme suit:

Sélectionner le code

<?xml
version="1.0" encoding="UTF-8"?>
<note><pour>Sara</pour><de>Yasmine</de><titre>Invitation</titre><corps>Venez
me voir chez moi ce week-end!
</corps></note>

 

 Tous les nœuds de texte vide disparaissent comme par magie.

TELECHRGER LE CODE SOURCE COMPLET DES EXEMPLES DE CE TUTORIAL

Par carabde 30 mars 2015