Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Lind L. Tailor

#21
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?
#22
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.