Generación de archivos XML a partir de schema

Me han dado un archivo .xsd para definir el formato de unos documentos XML que debemos generar a partir de unos datos introducidos vía web.
¿Puedo usar el schema para simplificar y no solo validar la creación de los documentos XML, es decir, recorriendo la estructura del schema en vez de generar las etiquetas "a pelo"?

1 Respuesta

Respuesta
1
No estoy muy seguro de haber entendido tu pregunta, de modo que tampoco estoy seguro de poder responder correctamente.
En principio tenemos dos problemas: el xsd y la creación de los xml.
El xsd es un documento de reglas. Este nos define no solo cómo debe estar hecho el documento para estar bien formado (la misma finalidad que el dtd) sino además las reglas de negocio que deben cumplir los valores de los elementos que el xml contendrá, todo ello escrito además en XML. En resumen, es un validador.
Por otro lado tenemos que generar un xml y validarlo frente al xsd, y este xml en principio tendremos que construirlo nosotros.
Entonces se nos ocurre que al tener el xsd, y contener este las reglas de validación de nuestro xml, podría existir una forma de extraer una concha xml bien formada donde poder poner nosotros los datos. No es una mala idea, pero no conozco ningún API en java (imagino que estáis usando el paquete jaxp) que nos permita hacer esto, y no creo que vaya a ser implementado, porque el problema se resuelve de otro modo.
Sin querer meterme en terrenos fangosos, te voy a resumir como abordaría yo el problema, y dejamos los consejos didácticos para aquel que se declare experto en XMLSchema (yo no lo soy).
De modo que yo tengo información que me ha llegado de algún sitio (en tu caso de un formulario web) y la tengo que dar forma de XML. Tengo dos opciones: La primera es, como tu dices generar las etiquetas a pelo y construir un árbol DOM de principio a fin. La segunda es tener el árbol DOM al empezar, bien formado, vacío y listo para contener mi información. ¿Esto cómo lo hago? Es muy fácil: escribo un XML bien formado y vacío (sin información) antes de empezar y lo cargo en un árbol DOM con la ayuda del parser de DocumentBuilder. Una vez que tengo el árbol, cargo los valores en los nodos convenientes, y si tengo algún nodo repetitivo, me crearé para él otro XML vacío con el fin de cargar tantos arboles DOM de esta estructura como registros tenga que generar, para luego colgarlos del nodo correspondiente del árbol principal.
Una vez que he terminado mi árbol, lo válido frente al schema y si está bien formado, lo envío a su destino.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas