Ejemplo de generación de archivo XML con JAXB
Este artículo está ligado con esta otra entrada donde se exlica de manera detallada cómo generar archivos XML utilizando JAXB.
Nuevamente, por motivos tributarios, nos vemos en la necesidad de trabajar en la generación de archivos XML.
En esta ocasión, el objetivo es generar el catálogo de cuentas contables en formato XML para enviar al SAT.
Todo lo escrito y explicado en este artículo, es totalmente aplicable para lo que aquí se presenta. Por lo tanto, no entraremos en detalles de cómo crear archivos XML con JAXB.
Caso práctico
Lo primero, es definir el elemento raíz. En este ejemplo, no se incluyen los getters/setters.:
También se define el componente anidado que contendrá las cuentas:
Como verán, en esta ocasión utilizamos la anotación @XmlAccessorType (XmlAccessType.FIELD). De esta manera las anotaciones @XmlAttribute en lugar de ir en los métodos getters, van en los atributos.
Con estas dos clases, tenemos lista la estructura para generar el catálogo de cuentas que exige el SAT.
Creamos un servlet para generar el XML al vuelo, de tal manera que el usuario lo pueda guardar en su computadora.
Nota: Por alguna razón, el plugin bash para mostrar el texto XML en Blogger lo deforma un poco.
Conclusión
Como se puede apreciar, es muy sencillo generar archivos XML utilizando las librerías JAXB. Estas son muy potentes, se han convertido en el caballito de batalla ahora con todos los requerimientos del SAT que deben ser entregados en XML.
Nuevamente, por motivos tributarios, nos vemos en la necesidad de trabajar en la generación de archivos XML.
En esta ocasión, el objetivo es generar el catálogo de cuentas contables en formato XML para enviar al SAT.
Todo lo escrito y explicado en este artículo, es totalmente aplicable para lo que aquí se presenta. Por lo tanto, no entraremos en detalles de cómo crear archivos XML con JAXB.
Caso práctico
Lo primero, es definir el elemento raíz. En este ejemplo, no se incluyen los getters/setters.:
@XmlRootElement(name = "Catalogo") @XmlAccessorType (XmlAccessType.FIELD) @XmlType(propOrder = {"version", "rfc", "totalCtas", "mes", "anno", "Ctas"}) public class CatalogoCuentasSAT { @XmlElement(name = "Ctas") private ListCtas; @XmlAttribute(name = "Version") private String version; @XmlAttribute(name = "RFC") private String rfc; @XmlAttribute(name = "TotalCtas") private String totalCtas; @XmlAttribute(name = "Mes") private String mes; @XmlAttribute(name = "Ano") private String anno;
También se define el componente anidado que contendrá las cuentas:
@XmlRootElement(name = "Ctas") @XmlAccessorType (XmlAccessType.FIELD) @XmlType(propOrder = {"codigoAgrupador", "numeroCuenta", "descripcion", "subcuentaDe", "nivel", "naturaleza"}) public class CuentasSAT { @XmlAttribute(name = "CodAgrup") private String codigoAgrupador; @XmlAttribute(name = "NumCta") private String numeroCuenta; @XmlAttribute(name = "Desc") private String descripcion; @XmlAttribute(name = "Nivel") private String nivel; @XmlAttribute(name = "Natur") private String naturaleza; @XmlAttribute(name = "SuCtaDe") private String subcuentaDe;
Como verán, en esta ocasión utilizamos la anotación @XmlAccessorType (XmlAccessType.FIELD). De esta manera las anotaciones @XmlAttribute en lugar de ir en los métodos getters, van en los atributos.
Con estas dos clases, tenemos lista la estructura para generar el catálogo de cuentas que exige el SAT.
Creamos un servlet para generar el XML al vuelo, de tal manera que el usuario lo pueda guardar en su computadora.
CatalogoCuentasSAT catalogoSATXML = null; OutputStream out = response.getOutputStream(); try{ catalogoSATXML = mgr.generarCatalogoSAT_XML(catalogoSAT); // create JAXB context and instantiate marshaller JAXBContext context = JAXBContext.newInstance(CatalogoCuentasSAT.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // Write to System.out //m.marshal(catalogoSATXML, System.out); // Write to File m.marshal(catalogoSATXML, out); }catch(Exception e){ log.error("Error al intentar genera el catalogo del SAT en XML"); e.printStackTrace(); //throw new Exception("Error al intentar genera el catalogo del SAT en XML \n"+e); }finally{ out.close(); }
Nota: Por alguna razón, el plugin bash para mostrar el texto XML en Blogger lo deforma un poco.
Conclusión
Como se puede apreciar, es muy sencillo generar archivos XML utilizando las librerías JAXB. Estas son muy potentes, se han convertido en el caballito de batalla ahora con todos los requerimientos del SAT que deben ser entregados en XML.
Comentarios
Publicar un comentario