Explicamos la clase DOMDocument de PHP que sirve para interpretar y parsear archivos XML para extraer cualquier información de sus nodos.
Lo primero que tenemos que dejar claro es que para poder realizar este ejemplo tenéis que tener como mínimo, la primera versión de PHP5, ya que en PHP4 la clase DOMDocument no funciona.
Una vez que tenemos esto claro el ejemplo es bastante sencillo de realizar. Partimos de un archivo .xml en el que tenemos un listado de usuarios con su nombre y la URL de su página web y lo primero que vamos a hacer es recoger el contenido del archivo .xml en una variable mediante la función file_get_contents().
$xml = file_get_contents("listado.xml");
Una vez que tenemos el contenido en nuestra variable vamos a instanciar la clase DOMDocument con la siguiente linea:
$DOM = new DOMDocument('1.0', 'utf-8');
Si os fijáis vemos que he pasado como parámetro el formato y la codificación del XML que hemos recogido en la variable $xml.
Lo siguiente que tenemos que hacer es leer el contenido de la variable, pero sabiendo que es un contenido XML, para ello utilizamos el procedimiento loadXML que esta dentro de DOMDocument
$DOM->loadXML($xml);
A continuación lo que debemos hacer es separar cada registro de nuestro XML, para ello realizamos la siguiente acción:
$usuarios = $DOM->getElementsByTagName('usuario');
Esta linea lo que hace es crear un array con todos los registros que tengamos con la etiqueta usuarios en nuestro XML.
Una vez que tenemos esto, lo que nos falta es mostrarlo en nuestra página web PHP. Para ello tan sólo tenemos que recorrer el array e ir creando nuestro listado.
<?php
foreach($usuarios as $usuario) {
echo '<li><a href="'.$usuario->getElementsByTagName("url")->item(0)->nodeValue.'" target="_blank">'.utf8_decode($usuario->getElementsByTagName("nombre")->item(0)->nodeValue).'</a></li>';
}
?>
Bueno estas lineas lo que hacen es crear un listado con el nombre del usuario y un enlace a su web. Para ello utiliza la función getElementsByTagName() que te coge el valor de la etiqueta que le pases como parámetro.
Para que os quede más claro os dejo todo el código completo de nuestro archivo .php
<html>
<head>
</head>
<body>
Listado de alumnos:
<?php
$xml = file_get_contents("listado.xml");
$DOM = new DOMDocument('1.0', 'utf-8');
$DOM->loadXML($xml);
$cursos = $DOM->getElementsByTagName('usuario');
?>
<ul>
<?php
foreach($usuarios as $usuario) {
echo '<li><a href="'.$usuario->getElementsByTagName("url")->item(0)->nodeValue.'" target="_blank">'.utf8_decode($usuario->getElementsByTagName("nombre")->item(0)->nodeValue).'</a></li>';
}
?>
</ul>
</body>
</html>
Cabe destacar que la función file_get_contens() puede también recoger el contenido de un archivo remoto, tan sólo tenemos que pasarla la URL de la siguiente forma:
$xml=file_get_contents("http://www.dominio.com/archivo.xml");