Utilisation de XPath dans PHP

Utilisation de XPath dans PHP
Le document XML est utilisé pour stocker une petite quantité de données, et parfois il est nécessaire de lire le contenu particulier du document XML basé sur la valeur du chemin à l'aide du script PHP. La fonction xpath () est utilisée pour analyser le contenu d'un document XML. Cette fonction peut être utilisée en utilisant simplexml_load_file () fonction ou en créant l'objet de Simplexmlelement classe. La fonction XPath () peut être utilisée pour lire les valeurs de nœud XML particulières indiquées dans ce tutoriel.

Syntaxe:

La syntaxe de la fonction xpath () est donnée ci-dessous.

Array Xpath (String $ path)

Cette fonction a un argument qui prend une valeur de chemin, et si le chemin existe dans un nœud du document XML, alors la valeur du nœud sera renvoyée sous forme de tableau. Différentes utilisations de cette fonction ont expliqué dans la partie suivante de ce tutoriel.

Créer un document XML:

Créer un fichier XML nommé des produits.xml avec le contenu suivant à l'emplacement où le fichier PHP sera créé pour analyser ce fichier.




MN-56345
Tablier
Moniteur Dell de 15 pouces
700


HD-34278
Samsung
1 TB Samsung HDD
520


MS-67457
Logitech
Souris sans fil Logitech
100


MN-76453
HP
Moniteur HP 14 pouces
750

Usage de simplexml_load_file () fonction:

La fonction xpath () avec l'objet créé par la fonction simplexml_load_file () a montré dans cette partie de ce tutoriel.

Exemple-1: Lisez les valeurs particulières du nœud XML

L'exemple suivant montre comment lire le contenu des valeurs de nœud particulières du document XML en définissant le chemin de fonction XPath (). La variable d'objet, $ xml est créé pour lire les valeurs de nœud spécifiques du des produits.xml déposer. «/ Produits / produit / marque» est utilisé dans le xpath () pour lire toutes les valeurs de nœud de marque. «/ Produits / produit» est utilisé dans le xpath () pour lire toutes les valeurs de nœud enfant de PRODUIT nœuds. pour chaque une boucle est utilisée pour imprimer les valeurs de NOM et PRIX nœuds.

// Créer un objet pour lire le fichier XML
$ xml = simplexml_load_file ('Produits.xml ');
// Recherchez toutes les valeurs de nœud de marque
$ marque = $ xml-> xpath ('/ produits / produit / marque');
// imprime les valeurs du tableau
écho "

La liste des noms de marque est:

"
foreach ($ marque comme name $)
Echo "$ Name
"

// Recherchez toutes les valeurs de nœud de produit
$ Products = $ xml-> xpath ('/ produits / produit');
écho "

La liste du nom et du prix du produit:

"
écho ""
écho ""
// imprime les valeurs du tableau
foreach ($ Products as $ product)
écho ""

écho "
NomPrix
$ Product-> Nom $$ Product-> Prix
"
?>

Sortir:

La sortie suivante apparaîtra après avoir exécuté le script à partir du serveur.

Exemple-2: Lisez les valeurs particulières du nœud XML basées sur la condition

L'exemple suivant montre comment lire les valeurs de nœud particulières en fonction de la condition à l'aide de la fonction XPath (). La valeur du chemin, '/ Produits / Produit [Prix> 600]', recherchera les valeurs de tous les nœuds enfants de PRODUIT nœud où la valeur de PRIX Le nœud est supérieur à 600. pour chaque une boucle est utilisée pour imprimer les valeurs de NOM et PRIX nœuds.

// Créer un objet pour lire le fichier XML
$ xml = simplexml_load_file ('Produits.xml ');
// Recherchez les produits où la valeur de prix est supérieure à 600
$ Products = $ xml-> xpath ('/ produits / produit [prix> 600]');
écho "

La liste du nom et du prix du produit où le prix est supérieur à 600:

"
écho ""
écho ""
// imprime les valeurs du tableau
foreach ($ Products as $ product)
écho ""

écho "
NomPrix
$ Product-> Nom $$ Product-> Prix
"
?>

Sortir:

La sortie suivante apparaîtra après avoir exécuté le script à partir du serveur.

Exemple-3: Lisez les valeurs de nœud XML particulières basées sur l'attribut

L'exemple suivant montre comment lire les valeurs de nœud particulières en fonction des valeurs d'attribut du nœud spécifique du document XML en utilisant la fonction xpath (). La valeur du chemin, '/ Produits / produit [@ catégories = ”Monitor”]' recherchera les valeurs de tous les nœuds enfants de le produit Node, où la valeur de l'attribut de catégorie est Moniteur. pour chaque une boucle est utilisée pour imprimer les valeurs de MARQUE, et PRIX nœuds.

// Créer un objet pour lire le fichier XML
$ xml = simplexml_load_file ('Produits.xml ');
// Recherchez les produits où la valeur d'attribut vis category est «moniteur»
$ Products = $ xml-> xpath ('/ produits / produit [@ catégorie = "moniteur"]');
écho "

La liste de la marque de produits, du nom et du prix basé sur la catégorie (moniteur):

"
écho ""
écho ""
// imprime les valeurs du tableau
foreach ($ Products as $ product)
écho ""

écho "
MarqueNomPrix
$ Product-> marque$ Product-> Nom $$ Product-> Prix
"
?>

Sortir:

La sortie suivante apparaîtra après avoir exécuté le script à partir du serveur.

Usage de Simplexmlelement classe:

Les utilisations de la fonction xpath () en créant l'objet de classe SimplexMlelement se sont montrés dans cette partie de ce tutoriel.

Exemple-4: utilisation de xpath () en définissant le contenu XML dans une variable

L'exemple suivant montre comment lire les valeurs de nœud du document XML déclaré dans une variable au lieu du fichier. Le contenu XML est stocké dans le $ xml_data variable. «/ Clients / Client» est utilisé comme valeur d'argument de la fonction xpath () pour lire toutes les valeurs des nœuds enfants du client nœud. Ensuite, un pour chaque une boucle est utilisée pour imprimer les valeurs de le nom nœud. "/ Clients / Client [@ Department = 'HR']" est utilisé comme valeur d'argument d'une autre fonction xpath () pour lire toutes les valeurs des nœuds enfants du nœud client où la valeur de département L'attribut est HEURE. Suivant, A pour chacun une boucle est utilisée pour imprimer les valeurs du e-mail nœud.

$ xml_data = <<

Maryland. Mahbub
mahbub @ gmail.com


Farhana Zaman
farhana @ gmail.com


Xml;
// Définir l'objet pour lire les données XML
$ xml = new SimplexMlelement ($ xml_data);
// Définir le chemin pour lire toutes les données des clients
$ clients = $ xml-> xpath ("/ clients / client");
// imprime le nom des clients
écho "

La liste des noms de clients:

"
foreach ($ les clients comme $ client)
Echo "$ Client-> Nom
"

// Définir la voie pour lire toutes les données clients du service RH
$ clients = $ xml-> xpath ("/ clients / client [@ département = 'hr']");
// imprime l'e-mail des clients
écho "

L'e-mail du client du service RH:

"
foreach ($ les clients comme $ client)
ECHO "$ Client-> Email
"

?>

Sortir:

La sortie suivante apparaîtra après avoir exécuté le script à partir du serveur.

Conclusion:

Deux façons différentes d'utiliser la fonction xpath () pour lire les valeurs de nœud du document XML basées sur le chemin spécifique ou le chemin avec la condition ou le chemin avec une valeur d'attribut ont été expliqués dans ce tutoriel en utilisant plusieurs exemples.