0. Introducción
Hay que enviar las cuentas a la Sindicatura de Cuentas. Para ello hay que adjuntar un fichero xml en base a un esquema xsd.
1. Localizar el esquema xsd
Googleando he encontrado esta url: https://www.pap.hacienda.gob.es/ficherosxsd/
2. Obtener clases java (pojos) a partir de xsd.
Ver el tutorial de JavaWebTutor
Vamos a Eclipse y cremos un "package" por ejmplo "ximo.otherapps.sical2". Apretando el boton derecho del ratón sobre dicho paquete y New-Other
Seleccionamos el proyecto, luego seleccionamos el fichero del esquema, y le indicamos el paquete y no indicamos nada mas
Y la siguiente pantalla la aceptamos tal como está
También aceptamos la siguiente pantalla tal como está
Luego nos avis que se pueden perder los ficheros de dicha carpeta y le decimos que si.
Y en la consola nos sale:
parsing a schema... compiling a schema... ximo/xotherapps/sical2/ApliPpriaGastos.java ximo/xotherapps/sical2/ApliPpriaIngresos.java ximo/xotherapps/sical2/ArrFinOtrOperaValoracion.java ximo/xotherapps/sical2/ColsBalance.java ximo/xotherapps/sical2/ColsContrAdmin.java ximo/xotherapps/sical2/ColsCuenta.java ximo/xotherapps/sical2/ColsEstCambPatri.java ximo/xotherapps/sical2/ColsEstFlujoEfec.java ximo/xotherapps/sical2/ColsEstPatrimonio.java ximo/xotherapps/sical2/ColsMemModCoste.java ximo/xotherapps/sical2/ColsMemModReval.java ximo/xotherapps/sical2/ConceptoNoPresupuestario.java ximo/xotherapps/sical2/CuentaNorm.java ximo/xotherapps/sical2/EjActYAnt.java ximo/xotherapps/sical2/EjActYAntOpc.java ximo/xotherapps/sical2/NatAct.java ximo/xotherapps/sical2/ObjectFactory.java ximo/xotherapps/sical2/package-info.java
Y observamos que se han generado las clases en nuestro paquete.
3. Validar XML en base a un esquema
Adjunto una clase que contiene el método ValidateXML
package ximo.xotherapps.utils.basic; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import javax.xml.validation.Schema; import org.xml.sax.SAXException; import java.io.IOException; import javax.xml.transform.stream.StreamSource; public class JAXBUtils{ /** * * @param xmlFile * @param schemaFile is relative from resource folder * @return */ public static boolean validateXML(String xmlFile, String schemaFile) { SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = null; try { try { schema = schemaFactory.newSchema( new File(Thread.currentThread().getContextClassLoader().getResource(schemaFile).getPath())); } catch (Exception e1) { schema = schemaFactory.newSchema(new File(schemaFile)); } Validator validator = schema.newValidator(); validator.validate(new StreamSource(new File(xmlFile))); return true; } catch (SAXException | IOException e) { e.printStackTrace(); return false; } } public static void main (String[] args) { boolean ok=validateXML( "/home/ximo/contabilidad.xml", "/home/ximo/xsd/Cuenta-Norm-2019.xsd"); if (ok) System.out.println("OK"); else System.out.println("ERROR!"); } }
4. Validador externo
En esta url: https://rendiciondecuentas.es/ValidacionExterior/home
Y llenamos los campos y seleccionamos el fichero y le damos a validarY en teroría el menos los efrrores estructurales no deberían aparecer (aunque los errores semánticos si que pueden haber)
5. Instrucciones de uso
Existe un pdf de instrucciones en la web del Consejo de Cuentas de Castilla y León.
No hay comentarios :
Publicar un comentario