logo oujood
🔍

PHP XML DOM:Comment Utiliser Le DOM XML en PHP

OUJOOD.COM

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:

Exemple :     📋 Copier 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

Exemple :     📋 Copier 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:

Exemple :     📋 Copier 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

Exemple :     📋 Copier 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:

Exemple :     📋 Copier 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.