70-SimpleXML - Obtener valores de nodo

SimpleXML es una extensión PHP que nos permite fácilmente manipular y obtener datos XML.

PHP SimpleXML - Obtener valores de nodo

Obtenga los valores de los nodos del archivo "note.xml":


<?php
$xml=simplexml_load_file("note.xml") or die("Error: Cannot create object");
echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>
                

Salida esperada:

Tove
Jani
Reminder
Don't forget me this weekend!
                

En SimpleXML, podemos cargar y trabajar con múltiples archivos XML de manera sencilla.

Ejemplo de otro archivo XML

Supongamos que tenemos un archivo XML llamado "books.xml" con el siguiente contenido:


<?xml version="1.0" encoding="utf-8"?>
<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="CHILDREN">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
</bookstore>
                

Para leer este archivo en PHP y obtener los datos de los libros, usamos SimpleXML:


<?php
$xml = simplexml_load_file("books.xml") or die("Error: No se pudo cargar el archivo");
foreach ($xml->book as $book) {
    echo "Título: " . $book->title . "<br>";
    echo "Autor: " . $book->author . "<br>";
    echo "Año: " . $book->year . "<br>";
    echo "Precio: $" . $book->price . "<br><br>";
}
?>
                

Salida esperada:

Título: Everyday Italian
Autor: Giada De Laurentiis
Año: 2005
Precio: $30.00

Título: Harry Potter
Autor: J K. Rowling
Año: 2005
Precio: $29.99
                

Podemos acceder a nodos específicos dentro de un XML usando índices en SimpleXML.

Ejemplo

Obtener el valor del nodo "title" de los primeros dos elementos "book" en "books.xml":


<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
echo $xml->book[0]->title . "<br>";
echo $xml->book[1]->title;
?>
                

Salida esperada:

Everyday Italian
Harry Potter
                

El siguiente ejemplo recorre todos los elementos "book" en el archivo "books.xml" y obtiene los valores de los nodos "title", "author", "year" y "price":


<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
foreach($xml->children() as $book) {
    echo $book->title . ", ";
    echo $book->author . ", ";
    echo $book->year . ", ";
    echo $book->price . "<br>";
}
?>
                

Salida esperada:

Everyday Italian, Giada De Laurentiis, 2005, 30.00
Harry Potter, J K. Rowling, 2005, 29.99
XQuery Kick Start, James McGovern, 2003, 49.99
Learning XML, Erik T. Ray, 2003, 39.95
                

Cómo obtener los valores de atributos dentro de un XML usando SimpleXML.

Ejemplo

El siguiente ejemplo obtiene el valor del atributo "category" del primer elemento "book" y el valor del atributo "lang" del elemento "title" en el segundo elemento "book":


<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
echo $xml->book[0]['category'] . "<br>";
echo $xml->book[1]->title['lang'];
?>
                

Salida esperada:

COOKING
en
                

Cómo recorrer un XML para obtener los valores de los atributos en un bucle.

Ejemplo

El siguiente ejemplo obtiene los valores de atributos de los elementos de "books.xml" en el archivo "books.xml":


<?php
$xml=simplexml_load_file("books.xml") or die("Error: Cannot create object");
foreach($xml->children() as $books) {
    echo $books->title['lang'];
    echo "<br>";
}
?>
                

Salida esperada:

en
en
en-us
en-us
                

Publicar un comentario

0 Comentarios