SimpleXML para PHP4
Simple XML para PHP4 De un tiempo a ésta parte el formato XML se ha vuelto imprescindible para implementar protocolos de intercambio de datos entre sistemas y lenguajes. Todos los lenguajes incorporan parsers con los que poder leer y generar XMLs de una forma más o menos amena. Con la evolución de PHP a su versión 5 apareció una extensión llamada SimpleXML que, con un funcionamiento al estilo de objetos, simplificaba el acceso a los datos abandonando el método de llamadas a ciertas funciones al encontrar tags de apertura y cierre en el archivo XML. Es una forma muy cómoda de trabajar es muy fácil acostumbrarse, pero a veces nos encontramos con hostings sólo en PHP 4 y nos vemos obligados a programar parsers a la vieja usanza. Recientemente encontré una portabilidad de SimpleXML para PHP 4 que, aunque no dispone de absolutamente toda la funcionalidad de la extensión original (sobretodo al generar XML de salida), suple perfectamente la necesidad. SimpleXML44 es el nombre de este backport de la extensión SimpleXML (escrito en PHP5) a PHP4. Según la web del autor, simplifica y optimiza el acceso a los datos y permite cambios en nodos CDATA y atributos, pero no es posible agregar o borrar ciertos nodos del árbol DOM. En mi toma de contacto (sólo lectura) cumplió perfectamente mis expectativas y ya lo tengo en mi biblioteca de paquetes de programación PHP. Está escrito íntegramente en PHP. Requiere la versión de PHP 4.4.2 o superior y tener instalada la extensión XML Parser (Expat). La licencia es de tipo BSD. Actualmente forma parte del Ister PHP4 Framework aunque es posible descargarlo atómicamente, con lo que facilita nuestro desarrollo en nuestro propio framework. Se puede descargar desde SourgeForge. La documentación del SimpleXML44 es algo limitada, pues se dan pocos ejemplos, pero habiendo usado el SimpleXML original nos hacemos una idea rápida de su funcionamiento. Ejemplo de funcionamiento Vamos a suponer un ejemplo rápido para ver lo simple que es. Pongamos que tenemos un archivo XML de la siguiente forma, guardado como 'clientes.xml' en la raíz: <?xml version="1.0" encoding="utf-8" standalone="yes"?> Pues bién, lo primero es descomprimir el archivo bajado en un directorio, donde queramos, por ejemplo en /simplexml44. En el script PHP pondremos lo siguiente: //Incluimos el paquete SimpleXML44 Como vemos, es una forma de trabajar similar al SimpleXML original, muy sencilla e intuitiva. Notas a tener en cuenta
Los errores que devuelve SimpleXML44 SimpleXML44 devuelve errores si los encuentra. Tanto si el archivo de entrada no existe, como si hay algun fallo en el XML, devuelve un error al estilo Warning que no es enviado al log, sino que se muestra por pantalla en una forma un tanto peculiar. Si no encuentra el archivo muestra por pantalla la ruta dónde debería estar, sin más, algo cómo:
Si el código del script hacer referencia a un elemento que no existe y no lo hemos protegido con el isset() se quejará devolviendo un Fatal Error así:
Si el XML no está bién formado devolverá un Warning propio al estilo:
dónde los números entre los corchetes significan lo siguiente:
Conclusión SimpleXML44 es una portabilidad a PHP4 que nos permite la comodidad de la extensión SimpleXML de PHP5. Algo limitada y sufrida con los errores, pero versátil y fácil de usar. Si debes portar una aplicación a PHP4 a causa de las limitaciones que el servidor dónde te hospedas, usas XML y estás acostumbrado al SimpleXML original, dále un vistazo que puede ser muy útil.
Vía: SyntaxError.es |