Recuperar datos de XML con php

Mucho tiempo desde que escribi el último artículo, pero, el trabajo, la familia y estudiar me quitan muchas horas al día.

En este artículo vamos a recuperar datos XML, que previamente lo hemos rellenado con algo de información y lo mostraremos mediante un archivo PHP.

Vamos a por el XML


<?xml version="1.0" ?>


<bookstore>
	
	<book category="Romance">

		<title lang="English">Ese instante de felicidad</title>
		<author>federico Moccia</author>
		<year>2013</year>
		<price>18,90</price>

	</book>

	<book category="Mistery">

		<title lang="Spanish">El toro</title>
		<author>Juanito</author>
		<year>2003</year>
		<price>25.00</price>

	</book>

	<book category="Mistery">

		<title lang="Spanish">Don quijote</title>
		<author>Cervantes</author>
		<year>2001</year>
		<price>40.00</price>

	</book>

</bookstore>


Recordar que los dos archicos deben de estar en el mismo directorio para no tener problemas.

Ahora vamos a por el archivo PHP que es bastante secillo.


<?php 

/**Primero creamos una variable donde almacenamos nuestro archivo xml
 * El metodo simplexml_loadf_file, recoge la información del archivo que le pasamos por parametro
 * En este caso nuestro archivo, libros.xml. 
 */
$archivo = 'libros.xml'; // almacenamos la ruta en la variable $archivo
$x = simplexml_load_file('libros.xml'); // almacenamos el archivo libros.xml en la variable $x

//Preguntamos si el archivo existe en la ruta especificada y el archivo no esta vacio
if (file_exists($archivo) &amp;&amp; ($x != &quot; &quot;)){

	foreach ($x-&gt;book as $book ) {
	
	echo &quot;&lt;hr&gt;&lt;b&gt;Titulo:&lt;/b&gt; &quot;.$book-&gt;title.&quot;&lt;/br&gt;&quot;.
	&quot;&lt;b&gt;Author: &lt;/b&gt;&quot;.$book-&gt;author.&quot;&lt;/br&gt;&quot;.
	&quot;&lt;b&gt;Year: &lt;/b&gt;&quot;.$book-&gt;year.&quot;&lt;/br&gt;&quot;.
	&quot;&lt;b&gt;Price: &lt;/b&gt;&quot;.$book-&gt;price;
}

}else{

	// En el caso que el archivo no exista o este vacio nos mostrara este mensaje
	echo &quot;El archivo no existe o no contiene datos para mostrar&quot;;
}


 ;?>

Demo