Uno de los problemas que más me ha costado resolver ha sido leer un XML desde cualquier lenguaje de programación, hoy voy a presentar cómo he resulto el problema utilizando el DOM (Document Object Model, Modelo de objetos del documento). Esto según la Wikipedia es:
es esencialmente una interfaz de programación de aplicaciones (API) que proporciona un conjunto estándar de objetos para representar documentos HTML y XML, un modelo estándar sobre cómo pueden combinarse dichos objetos, y una interfaz estándar para acceder a ellos y manipularlos.
Para ello partimos de un XML con este aspecto:
<?xml version="1.0" encoding="UTF-8"?> <coleccion> <peli> <titulo>El señor de los anillos</titulo> <director>Peter Jackson</director> <anio>2000</anio> </peli> <peli> <titulo>La jungla de cristal</titulo> <director>John McTiernan</director> <anio>1988</anio> </peli> <peli> <titulo>Rocky</titulo> <director>John G. Avildsen</director> <anio>1976</anio> </peli> </coleccion>
Es la pequeña colección de películas, para leer el XML hacemos uso de la siguiente pieza de código en PHP
<?php $objDOM = new DOMDocument(); $objDOM->load("pelis.xml"); // Cargar el fichero XML $entrada = $objDOM->getElementsByTagName("peli"); // Por cada peli cogemos los valores de los campos foreach ($entrada as $value) { $t = $value->getElementsByTagName("titulo"); $Titulos[] = $t->item(0)->nodeValue; $d = $value->getElementsByTagName("director"); $Directores[] = $d->item(0)->nodeValue; $a = $value->getElementsByTagName("anio"); $Anios[] = $a->item(0)->nodeValue; } // Mostramos los resultados $tam = count ($Titulos); for ($i = 0; $i < $tam; $i++) echo $Titulos[$i].' por '.$Directores[$i].' en el año '.$Anios[$i].'
'; ?>
El resultamos lo vemos a continuación:
El señor de los anillos por Peter Jackson en el año 2000
La jungla de cristal por John McTiernan en el año 1988
Rocky por John G. Avildsen en el año 1976