sábado, 14 de agosto de 2010

Leer archivo XML con PHP utilizando simpleXML

Uno de los parsers XML más sencillos de utilizar que nos ofrece PHP es simpleXML. Viene por defecto en la versión 5 y posteriores de PHP. SimplePHP añade una serie de métodos para acceder de forma bastente sencilla a nuestros archivos XML.

//dado el siguiente archivo XML
<?xml version="1.0" encoding="utf-8"?>
<items>
  <item id="1">
    <nombre>Producto Uno</nombre>
    <precio>250</precio>
    <cantidad>2</cantidad>
  </item>
  <item id="2">
    <nombre>Producto Dos</nombre>
    <precio>120</precio>
    <cantidad>1</cantidad>
  </item>
  <item id="3">
    <nombre>Producto Tres</nombre>
    <precio>20</precio>
    <cantidad>5</cantidad>
  </item>
</items>

//cargamos el archivo XML
$xml = simplexml_load_file("items.xml");
//mostramos todo el contenido del archivo
$str = $xml->asXML();
//extraemos directamente un elemento
$producto = $xml->item[0]->nombre;
//obtenemos un array con todos los nodos
//que dependen del principal
$arr = $xml->children();
//recorremos la matriz de items buscando
//a la vez los descendientes del primer item
foreach ($arr->children() as $etiqueta => $valor) {
  echo $etiqueta . ": " . $valor;
}
//acceder a los atributos
//mostramos el atributo id del segundo item
echo $xml->item[1]["id"];
//mostramos solo los elementos con el atributo id par
foreach ($arr as $item) {
  if ($item["id"] % 2 == 0) echo $item->nombre;
}