SimpleXML … la verdad es que sí
Últimamente trabajo mucho con PHP y de vez en cuando toca lidiar con información de terceros en XML o HTML. Con las funciones (o métodos) de SimpleXML el trabajo es sencillísimo.
SimpleXML carga un archivo XML en memoria como una estructura similar a un array. A los atributos de una etiqueta se accede con la notación de array asociativo y al contenido de un nodo con la notación ->
Ejemplo:
<libros> <libro id="1"> <titulo>El señor de los anillos</titulo> <autor>Tolkien</autor> </libro> <libro id="2"> <titulo>El fin de la infancia</titulo> <autor>Clark</autor> </libro> </libros>
Parsear este XML es trivial:
<?php
$libros = simplexml_load_file(‘libros.xml’);
foreach ($libros->libro as $libro) {
echo sprintf(“Libro nº %s: Título: %s Autor: %s”,
(string)$libro[‘id’],
(string)$libro->titulo,
(string)$libro->autor);
}
?>
El forzar la conversión de cada valor a string no es superfluo: si no se hace esto lo que obtenemos es otro objeto SimpleXML anidado al “padre” en vez del contenido del atributo o del nodo.
Otro uso posible es el parseo de HTML. Para garantizarnos que el HTML de origen está bien formado, conviene pasarle antes un tidy:
tidy -asxhtml -clean -numeric fichero.html