FoxPro/Visual FoxPro - Archivos TXT (XML)

   
Vista:

Archivos TXT (XML)

Publicado por Chente (70 intervenciones) el 05/12/2010 20:15:48
Un saludo a todos. Estoy trabajando con Factura Electronica y tengo dos opciones para generar archivos XML:

1. Tengo una plantilla
2. Hacer el XML linea por linea

Estaba intentando hacer la opcion 2 y hacerlo renglon por renglon, para esto había hecho una tabla que contenia un solo campo llamado renglon del tipo CHR(254) , la cual se llenaba con una cadena de caracteres. Al final hago un capiado con COPY TO para pasarloa texto, en general funciona pero, tiene una limitante por el tamaño del campo y el tipo de dato solo acepta cadenas de hasta 255 caracteres. y las cadenas de caracteres en la Facturación electronica aveces son mucho mas largos y obviamente se corta el contenido de lineas en el archivo final.

La opción UNO (quiza la ideal) es sustiuir valores (variables) de la plantilla pero no tengo idea de como hacerlo, ya que al igual que en la opción 2 si hago una tabla con el mismo campo y mismo tipo de dato (CHR 24) tendre el mismo problema, ya intente hacerlo con el campo tipo MEMO pero no hace el APPEND FROM

...que puedo hacer? Pudieran darme una IDEA o alguna otra forma de atacar el problema?

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Archivos TXT (XML)

Publicado por rodolfo (38 intervenciones) el 06/12/2010 16:24:33
Has probado a usar la clase XMLADAPTER que viene con el VFP??. Eso en conjunto con el SET MULTILOCKS ON y el CURSORSETPROP para habilitar el buffering, te permite generar ficheros XML que contengan campos MEMO, yo tengo implementada una aplicacion que hace eso e incluso el envio de fotos (campo Blob).

Escribe un poco mas de detalles y tal vez pueda ayudarte

Saludos

Rodolfo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos TXT (XML)

Publicado por Chente (70 intervenciones) el 06/12/2010 22:05:53
No he usado la clase que comentas, en realidad la estructura del XML es fija y solo quiero sustiuir ciertos valores pero la estructura no se mueve, por ejemplo el siguiente XML (de abajo)..., quisiera revisar linea por linea y sustituir lo que esta entre comillas y parentesis cuadrados (corchetes) por los valores que genere por proceso en Cada documento (la estructura es fija). Solo que ALGUNOS de esos valores pueden ser cadenas de mas de 255 caracteres y como mencionaba en la Nota anterior: si hago una tabla con un campo del tipo CHR(254) y luego hago un APPEND FROM del archivo XML (utilizado como plantilla), de esta forma cada renglon será un registro dentro de la tabla y podre leer las etiquetas y sustituir los valores segun las etiquetas, al final hare un COPY TO, en general la logica es correcta PERO, al insertar los valores pueden generarse renglones, registros o cadenas de caracteres de mas de 255 caracteres y obviamente NO cabran en el campo de la tabla y cuando haga el COPY TO habra renglones con información cortada. Espero su ayuda, saludos

version="[version]"
serie="[serie]"
folio="[folio]" fecha="[fecha]"
noAprobacion="[noAprobacion]" anoAprobacion="[anoAprobacion]"
formaDePago="[formaDePago]" subTotal="[subTotal]"
descuento="[descuento]" total="[total]" tipoDeComprobante="[tipoDeComprobante]"
noCertificado="12345678901234567890" certificado="" sello="">
<Emisor rfc="[emisorRfc]" nombre="[emisorNombre]">
<DomicilioFiscal calle="[emisorCalle]" codigoPostal="[emisorCodigoPostal]"
colonia="[emisorColonia]" estado="[emisorEstado]"
localidad="[emisorLocalidad]" municipio="[emisorMunicipio]" noExterior="[emisorNoExterior]"
noInterior="[emisorNoInterior]" pais="[emisorPais]" referencia="[emisorReferencia]" />
<ExpedidoEn calle="[expedidoCalle]" codigoPostal="[expedidoCodigoPostal]"
colonia="[expedidoColonia]" estado="[expedidoEstado]" localidad="[expedidoLocalidad]" noInterior="[expedidoNoInterior]" referencia="[expedidoReferencia]"
municipio="[expedidoMunicipio]" noExterior="[expedidoNoExterior]" pais="[expedidoPais]" />
</Emisor>
<Receptor nombre="[receptorNombre]"
rfc="[receptorRfc]">
<Domicilio calle="[receptorCalle]" codigoPostal="[receptorCodigo]"
colonia="[receptorColonia]" estado="[receptorEstado]"
localidad="[receptorLocalidad]" municipio="[receptorMunicipio]" noExterior="[receptorNoExt]" noInterior="[receptorNoInterior]" referencia="[receptorReferencia]"
pais="[receptorPais]" />
</Receptor>
<Conceptos>
<Concepto cantidad="[conceptoCantidad]" descripcion="[conceptoDesc]" importe="[conceptoImporte]" unidad="[conceptoUnidad]" valorUnitario="[conceptoValUnit]" noIdentificacion="[conceptoNoId]"></Concepto>
</Conceptos>
<Impuestos totalImpuestosRetenidos="[totalImpuestosRetenidos]" totalImpuestosTrasladados="[totalImpuestosTrasladados]">
<Traslados>
<Traslado impuesto="IVA" tasa="[trasladoIVAtasa]" importe="[trasladoImporteIVA]" />
<Traslado impuesto="IEPS" tasa="[trasladoTasaIEPS]" importe="[trasladoImporteIEPS]" />
</Traslados>
</Impuestos>
</Comprobante>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos TXT (XML)

Publicado por rodolfo (38 intervenciones) el 08/12/2010 16:01:27
Chente, entiendo que para ti es mas comodo este metodo, tendras que recorrer el archivo (de hecho creo que lo haces) y utilizar algo como STRTRAN para ir sustituyendo, pero insisto en que con utilices la clase XMLADAPTER, tiene muchas ventajas, permite XML anidados y en este caso con solamente un INSERT, o APPEND BLANK y REPLACE..., se te genera el archivo XML que desees.... Puedo ayudarte solo es necesario conocer un poco mas sobre la aplicacion donde usas ese archivo, digo......, si se puede

Salu2

Rodolfo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos TXT (XML)

Publicado por Jose Casalino (94 intervenciones) el 10/12/2010 19:29:26
Yo creo de la siguiente manera a lo mejor te sirve

control = FCREATE(xfile)
varx = ''
varx = '<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>'
= FPUTS(control, varx)
varx = '<iva>'
= FPUTS(control, varx)
varx = SPACE(4)+'<numeroRuc>'+RIGHT(SPACE(13)+ALLTRIM(tbpersona.ruc), 13)+'</numeroRuc>'
= FPUTS(control, varx)

....
...
..
etc
y al final

= FCLOSE(ctrl_archi)
arch_salid = PUTFILE('Archivo XML:', xfile, 'xml')
COPY FILE &xfile TO &arch_salid

espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos TXT (XML)

Publicado por abolom (31 intervenciones) el 13/12/2010 04:46:47
por que no checas group google y luego en sub teme vfp en español o factura electronica hay varios ejemplos ahi, en caso utilizo algoasi para crear el archivo xml.

TEXT TO lstrxml NOSHOW TEXTMERGE PRETEXT 7
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos TXT (XML)

Publicado por Chente (70 intervenciones) el 13/12/2010 20:40:00
Muchas gracias por su ayuda, estoy trabajando con la plantilla, sin embargo, comenzare a revisar sus sugerencias, porque siempre sera mejor tener varias opciones, sirve que aprendo mas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos TXT (XML)

Publicado por IvaClip ivaclip@hotmail.com (2 intervenciones) el 20/10/2014 07:48:46
Me gusto tu ejemplo, pero tengo varias dudas.... sobre como generar los xml... por ejemplo en tu ejemplo , en el comando FCLOSE(ctrl_archi) ....De donde sale "ctrl_archi" o que valor debe de contener....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Archivos TXT (XML)

Publicado por ivaclip (2 intervenciones) el 20/10/2014 07:51:35
Rodolfo... YA pude generar la cadena de texto , pero tengo problemas para convertirla a XML .... podria mandarte mi Codigo del XML que necesito generar y me podrias apoyar....?.... Estoy atorado en como generarlo a formato XML
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar