jueves, 21 de agosto de 2014

PHP - Leer ficheros con SimpleXML_load_file

Ejemplo para leer un archivo XML


<?xml version="1.0" encoding="UTF-8" ?>
<estudiantes>
   <estudiante estado=Activo">
      <identificacion tipo=Extranjero">1-2345-6789</identificacion>
      <nombre>Jordi</nombre>
      <apellidos>Daycry</apellidos>
      <genero>Masculino</genero>
      <nota>90</nota>
   </estudiante>
</estudiantes>

El contenido del archivo XML lo he reducido para no hacer muy larga la entrada, pero la idea es que contenga una lista de varios elementos estudiante.

Para realizar la lectura del fichero XML vamos a utilizar el siguiente código, ya que con una sola misma linea podemos realizar la lectura, posteriormente se realiza el tratado de datos para imprimirlos por pantalla.

<?php
//cargamos el fichero XML
if( $xml = @simplexml_load_file('estudiantes.xml') ){
 //seleccionamos los nodos
 $estudiantes = $xml->estudiante;
 //recorremos los elementos con un bucle
 foreach( $estudiantes as $estudiante ){
  echo"
   <tr>
    <td>".
     $estudiante->identificacion." <em>(".$estudiante->identificacion["tipo"].")</em>".
    '</td>'
    <td>".utf8_decode($estudiante->nombre)."</td>
    <td>".utf8_decode($estudiante->apellidos)."</td>
    <td>".$estudiante->genero."</td>
    <td>".$estudiante['estado']."</td>
   </tr>
  ";
 }
 //liberamos el objeto que contiene los datos del xml
 unset($xml);

}else{
 echo"
  <tr>
   <td colspan='5' align='center'>Error al leer el archivo.</td>
  </tr>
 ";
}
?>

Utilizo la función utf8_decode para que se impriman bien los acentos de los elementos que los contengan.

Como podéis observar para leer los atributos de un nodo, realizamos la lectura como si fuera un array.

<identificacion tipo="Extranjero>1-2345-6789</identificacion>
$estudiante->identificacion["tipo"] //echo Extranjero
$estudiante->identificacion // echo 1-2345-6789

Código completo



Código PHP


Código CSS


Archivo XML
























No hay comentarios:

Publicar un comentario