Por Rene Robles hace 8 años

¿Esquemas XSDs o generación de XMLs manualmente?

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::

  • XSD.exe es el compilador de esquema de .NET, el cual en una simple línea utilizada en el prompt del Developer Tools logra generar clases para varios lenguajes como: C#, VB, o inclusive DLLs listas para ser invocadas.
  • XJC.exe de la misma manera ofrece la misma solución para Java, ejecutándose desde una interfaz de línea de comandos. Nota: el IDE NetBeans, se encarga de invocar esta función de manera automática al importar un esquema o un WebService client.
  • Finalmente, Jsonix es una librería Open Source para JavaScript la conversión de elementos XML a JS y viceversa.

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:

  • El archivo XSD que nos ofrece el cliente NO siempre está correctamente formado. Esto puede incluso llegar a causar contradicciones.
  • Se debe tener extrema precaución al momento de anidar los elementos, ya que los namespaces de los nodos padre afectarán a los nodos hijo correspondientes, esto puede llegar a causar retrasos al momento de buscar incongruencias en el XML, que incluso pueden llegar a tomar más tiempo que lo que se tardaría construir el XML desde cero.
  • En el caso de la facturación electrónica, al generar un CFDI se debe de incluir el sello. El cual es generado mediante un proceso de cifrado de una cadena de caracteres. Esta cadena, a su vez, se obtiene a partir de la transformación (XSLT) del XML a un “resúmen” tipo String, el cual es separado por pipes.

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:

  • La probabilidad de que se presenten incrementa potencialmente por el factor humano.
  • La complejidad de las clases incrementa proporcionalmente a la complejidad del esquema. Por ejemplo, existen addendas que solamente incluyen tres líneas en su definición, pero a su vez, existen otras mucho más detalladas y extensas, las cuales no necesariamente son totalmente descriptivas en cada uno de sus campos.


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. 

Artículo creado en:
Timbrado
CFDI
Creado por Redes sociales hace 4 años

Riesgos graves para tu empresa con la nueva reforma fiscal 2020 de Lista Negra del SAT

​Ante los agresivos esquemas de fiscalización actuales y las más aún agresivas sanciones para empresas, socios o representantes que entran en vigor a partir de 2020, no se puede actuar con displi...

Creado por Capacitación hace 5 años

​¿Cuándo debes realizar un CFDI de nómina?

Según la ley tendrías que generar el CFDI de nómina en la fecha en la que se pague el salario; sin embargo, para facilitar el proceso puedes generarlo antes o después de realizar el pago. Si gener...

message