Uso de XPath en PHP

Uso de XPath en PHP
El documento XML se utiliza para almacenar una pequeña cantidad de datos, y a veces se requiere leer el contenido particular del documento XML basado en el valor de ruta utilizando el script PHP. La función XPATH () se usa para analizar el contenido de un documento XML. Esta función se puede usar usando simplexml_load_file () función o creando el objeto de Sencillo clase. La función xpath () se puede usar para leer los valores de nodo XML particulares que se muestran en este tutorial.

Sintaxis:

La sintaxis de la función xpath () se da a continuación.

Array xpath (cadena $ ruta)

Esta función tiene un argumento que toma un valor de ruta, y si la ruta existe en cualquier nodo del documento XML, entonces el valor del nodo se devolverá como una matriz. Diferentes usos de esta función se han explicado en la siguiente parte de este tutorial.

Crear documento XML:

Crear un archivo XML llamado productos.xml con el siguiente contenido en la ubicación donde se creará el archivo PHP para analizar este archivo.




MN-56345
Dar a luz
15 pulgadas Dell Monitor
700


HD-34278
SAMSUNG
1 TB Samsung HDD
520


MS-67457
Logitech
Mouse inalámbrico logitech
100


MN-76453
HP
Monitor HP de 14 pulgadas
750

Uso de simplexml_load_file () función:

La función xpath () con el objeto creado por la función simpxml_load_file () se ha mostrado en esta parte de este tutorial.

Ejemplo-1: lea los valores de nodo XML particulares

El siguiente ejemplo muestra cómo leer el contenido de los valores de nodo particular del documento XML definiendo la ruta de función xpath (). La variable de objeto, $ xml se crea para leer los valores de nodo específicos del productos.xml archivo. '/Productos/producto/marca' se usa en XPATH () para leer todos los valores de nodo de marca. '/Productos/Producto' se usa en el xpath () para leer todos los valores del nodo infantil de PRODUCTO nodos. para cada el bucle se usa para imprimir los valores de NOMBRE y PRECIO nodos.

// Crear objeto para leer el archivo XML
$ xml = simpxml_load_file ('productos.xml ');
// busca todos los valores de nodo de marca
$ marca = $ xml-> xpath ('/productos/productos/marca');
// imprime los valores de la matriz
eco "

La lista de marcas es:

";
foreach ($ marca como $ name)
echo "$ nombre
";

// busca todos los valores de nodo del producto
$ productos = $ xml-> xpath ('/productos/productos');
eco "

La lista de nombre y precio del producto:

";
eco "";
eco "";
// imprime los valores de la matriz
foreach ($ productos como $ producto)
eco "";

eco "
NombrePrecio
$ Product-> Nombre $$ Producto-> Precio
";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script desde el servidor.

Ejemplo-2: lea los valores de nodo XML particulares basados ​​en la condición

El siguiente ejemplo muestra cómo leer los valores de nodo particulares basados ​​en la condición usando la función XPATH (). El valor de ruta, '/Productos/Producto [Precio> 600]', buscará los valores de todos los nodos infantiles de PRODUCTO nodo donde el valor de PRECIO El nodo es más de 600. para cada el bucle se usa para imprimir los valores de NOMBRE y PRECIO nodos.

// Crear objeto para leer el archivo XML
$ xml = simpxml_load_file ('productos.xml ');
// busca los productos donde el valor del precio es más de 600
$ productos = $ xml-> xpath ('/productos/productos [precio> 600]');
eco "

La lista de nombre y precio del producto donde el precio es más de 600:

";
eco "";
eco "";
// imprime los valores de la matriz
foreach ($ productos como $ producto)
eco "";

eco "
NombrePrecio
$ Product-> Nombre $$ Producto-> Precio
";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script desde el servidor.

Ejemplo-3: lea los valores de nodo XML particulares basados ​​en el atributo

El siguiente ejemplo muestra cómo leer los valores de nodo particulares basados ​​en los valores de atributo del nodo específico del documento XML usando la función XPATH (). El valor de ruta, '/Productos/Producto [@Category = "Monitor"]' buscará los valores de todos los nodos infantiles de el producto nodo, donde está el valor del atributo de categoría Monitor. para cada el bucle se usa para imprimir los valores de NOMBRE DE LA MARCA, y PRECIO nodos.

// Crear objeto para leer el archivo XML
$ xml = simpxml_load_file ('productos.xml ');
// busca los productos donde el valor del atributo çategory es 'monitor'
$ productos = $ xml-> xpath ('/productos/productos [@category = "monitor"]');
eco "

La lista de marca de productos, nombre y precio basado en la categoría (monitor):

";
eco "";
eco "";
// imprime los valores de la matriz
foreach ($ productos como $ producto)
eco "";

eco "
MarcaNombrePrecio
$ producto-> marca$ Product-> Nombre $$ Producto-> Precio
";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script desde el servidor.

Uso de Sencillo clase:

Los usos de la función xpath () creando el objeto de clase SimpleMlelement se han mostrado en esta parte de este tutorial.

Ejemplo-4: uso de xpath () definiendo el contenido de XML en una variable

El siguiente ejemplo muestra cómo leer los valores de nodo del documento XML declarados en una variable en lugar del archivo. El contenido de XML se almacena en el $ xml_data variable. "/Clientes/Cliente" se usa como el valor de argumento de la función xpath () para leer todos los valores de los nodos infantiles del cliente nodo. A continuación, un para cada el bucle se usa para imprimir los valores de el nombre nodo. "/Clientes/Customer [@department = 'HR']" se usa como el valor de argumento de otra función xpath () para leer todos los valores de los nodos infantiles del nodo del cliente donde el valor de departamento El atributo es HORA. Próximo, A para cada el bucle se usa para imprimir los valores del correo electrónico nodo.

$ xml_data = <<

Maryland. Mahbub
[email protected]


Farhana Zaman
[email protected]


Xml;
// Definir objeto para leer los datos XML
$ xml = new SimplexMLelement ($ xml_data);
// Defina la ruta para leer todos los datos de los clientes
$ CLIENDS = $ XML-> XPATH ("/CLIENDES/CLIENTE");
// Imprima el nombre de los clientes
eco "

La lista de nombres de clientes:

";
foreach ($ clientes como $ cliente)
echo "$ Customer-> Nombre
";

// Definir ruta para leer todos los datos de los clientes del departamento de recursos humanos
$ CLIENDS = $ XML-> XPATH ("/CLIENTS/CLIENTER [@department = 'hr']");
// Imprima el correo electrónico de los clientes
eco "

El correo electrónico del cliente del departamento de recursos humanos:

";
foreach ($ clientes como $ cliente)
echo "$ Customer-> Correo electrónico
";

?>

Producción:

La siguiente salida aparecerá después de ejecutar el script desde el servidor.

Conclusión:

Dos formas diferentes de usar la función XPATH () para leer los valores de nodo del documento XML basados ​​en la ruta específica o la ruta con la condición o la ruta con el valor del atributo se han explicado en este tutorial utilizando múltiples ejemplos.