XML en PHP5 con SimpleXML
Antes de PHP5 trabajar con XML podía resultar engorroso. La forma habitual de manipular XML era usar las API propuestas por SAX (Simple API for XML) y DOM-XML (Document Object Model XML).
Con la aparición de PHP5 se incorpora una tercera opción que, sin duda, facilitará la vida a aquellos que deban trabajar con XML. Se trara de simpleXML.
Hay varias maneras de trabajar con simpleXML:
Cargando el XML desde un string:
$stringXML = file_get_contents( ‘file.xml’ );
$file = simplexml_load_string( $stringXML );
Cargando el archivo XML directamente:
$file = simplexml_load_file(“file.xml”);
O con un estilo más OO:
$file = new SimpleXMLElement(‘file.xml’, null, true);
Con estas simples sentencias tendremos un array $file con el contenido estructurado del XML.
Una vez tenemos esta información ya podemos empezar a manipular o filtrar los datos.
Para obtener resultados concretos del árbol de datos generado podemos usar la potente sintaxis de XPATH:
file.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<simplexml>
<persona>
<nombre>Ned</nombre>
<apellido>Stark</apellido>
</persona>
<persona>
<nombre>Jon</nombre>
<apellido>Nieve</apellido>
</persona>
<persona>
<nombre>Bran</nombre>
<apellido>Stark</apellido>
</persona>
<persona>
<nombre>Jaime</nombre>
<apellido>Lannister</apellido>
</persona>
<persona>
<nombre>Tyrion</nombre>
<apellido>Lannister</apellido>
</persona>
</simplexml>
Para obtener los nodos persona que contengan un apellido en concreto:
<?php
$xml_file = simplexml_load_file(“file.xml”);
foreach($xml_file->xpath(“//*[contains(apellido,'Stark')]“) as $persona)
{
printf(“%s – %s <br>”, $persona->nombre, $persona->apellido);
}
?>
En el caso de tener que alterar los datos del XML es muy práctico trabajar con el método más OO style:
$file = new SimpleXMLElement(“file.xml”, null, true);
$persona = $file->addChild(“persona”);
$persona->addChild(“nombre”,”Rickon”);
$persona->addChild(“apellido”, “Stark”);
Más simple imposible no?
Tras todas las modificaciones podemos obtener el XML resultante con el método asXML():
$file->asXML(“newFile.xml”);
Hasta aquí esta pequeña introducción a simpleXML. Ahora queda en vuestras manos seguir profundizando en las poderosas posibilidades de esta librería en combinación con XPATH.
Màrius Armenteras Comellas
Todavía no hay comentarios
Replica