Por Rene Robles hace 8 años
La gran mayoría de las aplicaciones hoy en día, requieren la generación de un archivo XML que cumpla con una estructura específica, en el caso del ámbito de la facturación electrónica, puede estar basado en el estándar CFDI 3.2 o en su defecto, en addendas. Inclusive, las peticiones SOAP requeridas para los WebService se construyen a partir de un XSDL.
Para estos casos, nuestros ambientes de desarrollo de preferencia nos ofrecen herramientas para generar archivos XML con una estructura definida, ya sea mediante frameworks o compiladores, los cuales permiten derivar una clase a partir de un archivo de definición de esquema (.xsd).
Tecnologías como .NET, Java y Javascript ofrecen herramientas similares que facilitan el cumplimiento de esta necesidad. Entre estas, se pueden mencionar las siguientes::
En primera instancia, la compilación de esquemas a clases parece ser lo más factible, sin embargo, se debe que tener en cuenta los siguientes aspectos:
Esto implica serializar (o hacer un Marshal en caso de trabajar sobre Java) un objeto para obtener el XML, con éste generar la cadena original y posteriormente el sello. El sello generado se debe de incluir en el objeto antes mencionado y luego, VOLVER a serializar para que sea finalmente incluído en el XML (método apegado al estricto uso de objeto -> XML). Lo cual añade unos valiosos milisegundos extras al tiempo de ejecución de nuestra aplicación.
Entonces, si se pueden llegar a presentar todos estos inconvenientes, ¿es mejor construir un XML manualmente?
La respuesta a esta pregunta depende exclusivamente del caso en el que se quiera utilizar. En el caso de hacerlo manualmente, nos asegura que si llegaran a presentarse cambios en un futuro, los requisitos sean mucho más fáciles y prácticos de implementar, algo que ocurre comúnmente. Para tener un mejor criterio al momento de decidir, hay que considerar los siguientes aspectos:
En conclusión, antes de iniciar la generación de un XML, se recomienda analizar la complejidad del mismo, como lo son: los cambios que puede sufrir en un futuro, catálogos externos que puedan afectar el proceso, si la persona encargada del desarrollo es confiable, el ambiente en el que será desarrollado y el impacto que tenga su desempeño de acuerdo a los requerimientos.