Título: Generar XML a partir de un archivo de texto (.txt) usando XSLT en Java Publicado por: Lind L. Tailor en 13 Marzo 2015, 17:37 pm Hola, amigos.
Tengo el siguiente archivo de texto (.txt) XX000000000000000111Example OO001Test Donde cada valor de cada linea tiene un limite de caracteres, de acuerdo al ID que se valla leyendo primeramente; es decir, si el ID es igual a XX entonces debe leer los caracteres especificados de acuerdo a ese ID, si el ID es OO entonces leera los especificados para ese ID. *Producto: Id (2 caracteres): XX Codigo(18 caracteres): 000000000000000111 Descripcion(10 caracteres): Example *Usuario: Id (2 caracteres): OO Numero(3 caracteres): 001 Nombre(40 caracteres): Test Tengo mi aplicacion Java Standalone en donde realizo precisamente esas validaciones correspondientes, como los recupera de una base de datos, los voy cortando si es mayor o si es muy corto lo relleno con espacios o ceros segun sea el caso, por lo tanto, el limite de los valores por cada ID sera fijo. Me gustaria leer ese archivo y convertirlo a un archivo XML, donde la creacion del archivo XML lo hago con Saxon, mediante la siguiente forma. try { Processor proc = new Processor(false); XsltCompiler comp = proc.newXsltCompiler(); XsltExecutable exp = comp.compile(new StreamSource(new File("archivos/xsl/convertir.xsl"))); Serializer out = new Serializer(); out.setOutputProperty(Serializer.Property.METHOD, "xml"); out.setOutputProperty(Serializer.Property.INDENT, "yes"); out.setOutputFile(new File("archivos/xml/canada.xml")); XsltTransformer trans = exp.load(); trans.setInitialTemplate(new QName("main")); trans.setDestination(out); trans.transform(); } catch (SaxonApiException sae) { sae.printStackTrace(); } Si se corre el siguiente codigo me crea el archivo correspondiente, de acuerdo al archivo .xsl que yo eh definido, para este caso hice algo sencillo como se muestra a continuación. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:template name="main" match="/"> <producto> <codigo>8</codigo> </producto> </xsl:template> </xsl:stylesheet> Ahora, serian tan amables de ayudarme como hago que lea mi archivo de texto para posteriormente ir obteniendo la salida correspondiente. <producto> <identificador>XX</identificador> <codigo>000000000000000111</codigo> <descripcion>Example</descripcion> </producto> <usuario> <identificador>OO</identificador> <codigo>001</codigo> <descripcion>Test</descripcion> </usuario> De antemano, muchas gracias por su ayuda. Título: Re: Generar XML a partir de un archivo de texto (.txt) en Java Publicado por: Usuario Invitado en 13 Marzo 2015, 18:38 pm ¿Por qué no usas el API de Java para manejo de XML?. Te pongo un ejemplo:
User.java Código
Product.java Código
Report.java Código
ReportMarshaller.java Código
Main.java Código
XML generado: Código
Lectura del XML: Código: Leyendo el XML... El código es sencillo. El método marshal de Marshaller recibe dos parámetros: 1) El objeto anotado con XmlRootElement 2) Un objeto File de salida. El método unmarshal recibe: 1) El objeto File que apunta al fichero XML a leer. XmlRootElement indica que dicha clase es el primer nivel de la jerarquía XML. XmlElement indica que dicha propiedad o clase es un elemento dentro de la jerarquía (un tag). Cualquier duda, comentas. Título: Re: Generar XML a partir de un archivo de texto (.txt) en Java Publicado por: Lind L. Tailor en 13 Marzo 2015, 19:11 pm Muchas gracias, Gus Garsaky.
De hecho eso fue lo primero que realice, sin embargo, la actividad tiene que ser realizada mediante el uso de plantillas XLST eh ahí la razón del porque tengo un archivo .xsl y uso Saxon para la creación del archivo. Desgraciadamente me rechazaron la propuesta en donde implemento el API de Java para manejo de archivos XML. Muchas gracias por tu ayuda; completo, entendible y funcional (Aunque le hice unos cambios xD), pero necesito implementar el XLST, ¿Alguna idea de como? Título: Re: Generar XML a partir de un archivo de texto (.txt) en Java Publicado por: Usuario Invitado en 13 Marzo 2015, 19:27 pm Se puede transformar un XML con un schema. Aquí tienes un ejemplo:
Link: Transformar XML con XLST (http://blog.bdoughan.com/2012/11/using-jaxb-with-xslt-to-produce-html.html) |