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 ($aux= fgets($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!