Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/09/2009, 09:59
ebaraut
 
Fecha de Ingreso: agosto-2009
Mensajes: 11
Antigüedad: 15 años, 5 meses
Puntos: 0
Leer xml con php

Hola,
no sé como leer una parte de un xml.

Me he basado en este artículo de: dessarrolloweb/articulos/2491.php (es que todavía no puedo publicar links en el foro)

y todo funciona perfectamente, pero he añadido más elementos en el xml y me pierdo a la hora de leerlo con php.

El archivo xml, siguiendo el del artículo, sería:
Código:
<?xml version="1.0" encoding="ISO-8859-1"?> 
<bloque> 
<noticia> 
  <titulo>Hola Caracola </titulo> 
  <autor>KaoS</autor> 
  <cuerpo>Olla Kaitos a Luisete</cuerpo> 
  <fotos>
       <foto1>foto01.jpg</foto>
       <foto2>foto02.jpg</foto>
  </fotos>
</noticia> 
<noticia> 
  <titulo>Nuevo articulo en desarrolloweb </titulo> 
  <autor>Raul</autor> 
  <cuerpo>Jeje hola, aqui estamos </cuerpo> 
  <fotos>
       <foto1>fotox.jpg</foto>
       <foto2>fotoy.jpg</foto>
       <foto3>fotoz.jpg</foto>
  </fotos>
</noticia> 
</bloque>
en rojo lo que yo he añadido.

y la función que lo lee:
Código PHP:
function CargarXML($ruta_fichero){ 
  
$contenido ""
  if(
$da fopen($ruta_fichero,"r")) { 
      while (
$auxfgets($da,1024)) { 
          
$contenido.=$aux;
     } 
   
fclose($da); 
   } else { 
      echo 
"Error: no se ha podido leer el archivo <strong>$ruta_fichero</strong>";
   } 

  
$tagnames = array ("titulo","autor","cuerpo","fotos"); 

  if (!
$xml domxml_open_mem($contenido)) { 
     echo 
"Ha ocurrido un error al procesar el documento<strong> \"$ruta_fichero\"</strong> a XML <br>"
     exit; 
  } else { 
     
$raiz $xml->document_element(); 
     
$tam=sizeof($tagnames); 
     for(
$i=0$i<$tam$i++){ 
        
$nodo $raiz->get_elements_by_tagname($tagnames[$i]); 
        
$j=0
        foreach (
$nodo as $etiqueta){ 
            
$matriz[$j][$tagnames[$i]]=$etiqueta->get_content(); 
            
$j++
       } 
    } 
    return 
$matriz
  }

Esto me lee:
matriz[0] = Array
matriz[1] = Array

Y leyendo uno de los Arrays:
matriz[0][titulo] = Hola Caracola
matriz[0][autor] = KaoS
matriz[0][cuerpo] = Olla Kaitos a Luisete
matriz[0][fotos]=foto01.jpg foto02.jpg

No sé como leer cada tag de las fotos como otro array más para poder recorrerlo y saber quantas fotos hay para mostrarlas. He probado dentro del foreach ($nodo as $etiqueta), pero obviamente algo se me escapa.

Desde ya, gracias por vuestra ayuda!
Saludos!