
DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
CHR(160) VS CHR(32)
-
- Mensajes: 8
- Registrado: Mié Abr 17, 2013 3:17 pm
CHR(160) VS CHR(32)
Buenas tardes, no se si esto vaya aqui, pero ...
Porque al utilizar los archivos XSLT para obtener la cadena original el CHR(160) lo convierte a CHR(32) provocando una cadena diferente y por consiguiente la validación falla siendo que esta correcta.
Alguien que me pueda orientar, Gracias Ignacio
Porque al utilizar los archivos XSLT para obtener la cadena original el CHR(160) lo convierte a CHR(32) provocando una cadena diferente y por consiguiente la validación falla siendo que esta correcta.
Alguien que me pueda orientar, Gracias Ignacio
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: CHR(160) VS CHR(32)
En el XML esta prohibido caracteres con valor ascii mayores a 127
Un Chr(160) corresponde a una "a" acentuda (á) y eso debe codificarse con DOS BYTES segun el codigo UTF8, lo mismo aplica para las eñes y todas las demas vocales acentuadas
Dicho de otro modo, lo cambia a espacio porque no lo reconoce.
____________________
pd. nop, este foro de Visual FoxPro no es el indicado para esta duda, lo voy a pasar al foro de XML
Un Chr(160) corresponde a una "a" acentuda (á) y eso debe codificarse con DOS BYTES segun el codigo UTF8, lo mismo aplica para las eñes y todas las demas vocales acentuadas
Dicho de otro modo, lo cambia a espacio porque no lo reconoce.
____________________
pd. nop, este foro de Visual FoxPro no es el indicado para esta duda, lo voy a pasar al foro de XML
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 8
- Registrado: Mié Abr 17, 2013 3:17 pm
Re: CHR(160) VS CHR(32)
DADO escribió:En el XML esta prohibido caracteres con valor ascii mayores a 127
Un Chr(160) corresponde a una "a" acentuda (á) y eso debe codificarse con DOS BYTES segun el codigo UTF8, lo mismo aplica para las eñes y todas las demas vocales acentuadas
Dicho de otro modo, lo cambia a espacio porque no lo reconoce.
____________________
pd. nop, este foro de Visual FoxPro no es el indicado para esta duda, lo voy a pasar al foro de XML
mmm, en una etiqueta del xml traigo un cierto valor y al final de este valor trae 2 espacios en blanco, pero al preguntar por el ascii de estos 2 caracteres me dice que es 160 y 160 lo cual es diferente al aplicarle los archivos de trasformacion ya que me trae el valor de la etiqueta con 2 valores ascci de 32 y 32.
El detalle no es con los caracteres acentuados, son a la vista espacios pero el ascii es 160 y no 32.
-
- Mensajes: 8
- Registrado: Mié Abr 17, 2013 3:17 pm
Re: CHR(160) VS CHR(32)
Muesto el XML
<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd " version="3.2" serie="C" folio="14170" fecha="2013-04-09T20:38:27" sello="YiUFfEhiK4ekcLH5TAp+6yfEWtjK3jMxdsFML7lNY61CQ40l7/J5mvywBD3nMlDpL4RJWL5AGfFwmrk00PKBSfxyFIV9gxn164gL+UaNAMDKCOr5Nu5vFPUeONtIbawoj9i6l9IJioEv+amm6Kjhk8s3T7SVhcKsjGsHxS2Zfk8=" formaDePago="PAGO EN UNA SOLA EXHIBICION" noCertificado="00001000000104472370" certificado="MIIEHzCCAwegAwIBAgIUMDAwMDEwMDAwMDAxMDQ0NzIzNzAwDQYJKoZIhvcNAQEFBQAwggE2MTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWEGFjb2RzQHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJFJlc3BvbnNhYmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczAeFw0xMTEwMDQyMjMyMzBaFw0xMzEwMDMyMjMyMzBaMIG/MRwwGgYDVQQDExNDQUJPIE9FU1RFIFNBIERFIENWMRwwGgYDVQQpExNDQUJPIE9FU1RFIFNBIERFIENWMRwwGgYDVQQKExNDQUJPIE9FU1RFIFNBIERFIENWMSUwIwYDVQQtExxDT0UwNzA5MTA0OTMgLyBDQUdCNzIwOTE0NzI3MR4wHAYDVQQFExUgLyBDQUdCNzIwOTE0SE5MU01SMDQxHDAaBgNVBAsTE0NBQk8gT0VTVEUgU0EgREUgQ1YwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMNpNcZD1I1PCX8+7zh1Wu3BGZVIPyfKSV1bBpXzRUt25isSDcjbfp1id6JtFmFdipFWL2gX2GzqAfNC7l0naB0z2mvyWAVkEJFErbrH5huJBl87X6ZqsHdyI1k+m3wz6QdT3T2dHFnRE5oFoBqCmbYDTYjJo7oVUClkzqCnpjB7AgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBBQUAA4IBAQBLgDlcmDMJKuc0AytBS8fJ+2n+OZxV3d1MxFoeZ53I/C5GGaWKrNnApiedwMSUz+QH3MKJbGtkqEI5OyxHawcbRX/sAv8E7itxdU+4Wxw5roxkNz+lWgYT+MroyIrN/OLI6gXVzpikDje21TbE1Cy1F0viGfcD/9GrQ3VvtKgcxP60PA8srdB0Lon47Pp0jhcRBb6P/xvo0fQE+IcapVdie7H2gKLR/jlKOcTdVbqm9cy3UL/n3L3XfJCFLuJaUNKqR8aBrQzp9RfTINnKat1LJ28vVdJZq956YXG1boPr37E586N/8tUV4w1jYRuUHP6Fjw+giHV0bC8JlHgSWssT" subTotal="207.75" total="240.99" tipoDeComprobante="ingreso" metodoDePago="NO IDENTIFICADO" LugarExpedicion="PASEO DE LOS LEONES 1800 COL. COL. CUMBRES 2° SECTOR
C.P. 64610 MONTERREY, NUEVO LEON">
<cfdi:Emisor rfc="COE070910493" nombre="CABO OESTE SA DE CV">
<cfdi:DomicilioFiscal calle="ESPAÑA" noExterior="411" colonia="INDUSTRIAL MARTEL" localidad="SANTA CATARINA" municipio="SANTA CATARINA" estado="NUEVO LEON" pais="MEXICO" codigoPostal="66367"/>
<cfdi:ExpedidoEn calle="PASEO DE LOS LEONES" noExterior="1800" colonia="COL. CUMBRES 2° SECTOR " estado="NUEVO LEON" pais="MEXICO" codigoPostal="64610"/>
<cfdi:RegimenFiscal Regimen="Regimen general de personas morales"/>
</cfdi:Emisor>
<cfdi:Receptor rfc="ROTM840519210" nombre="RODRIGUEZ TORRES MICHAEL ALBERT">
<cfdi:Domicilio calle="RIO BLANCO" noExterior="4100" noInterior="54" colonia="VALLE DE SAN ISIDRO" municipio="ZAPOPAN" codigoPostal="45130" estado="JALISCO" pais="MEXICO"/>
</cfdi:Receptor>
<cfdi:Conceptos>
<cfdi:Concepto cantidad="1.00" unidad="NO APLICA" noIdentificacion="000001" descripcion="CONSUMO DE ALIMENTO" valorUnitario="207.75" importe="207.75"/>
</cfdi:Conceptos>
<cfdi:Impuestos totalImpuestosTrasladados="33.24"><cfdi:Traslados><cfdi:Traslado impuesto="IVA" tasa="16.00" importe="33.24"/></cfdi:Traslados></cfdi:Impuestos>
<cfdi:Complemento><tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigit ... igital.xsd" selloCFD="YiUFfEhiK4ekcLH5TAp+6yfEWtjK3jMxdsFML7lNY61CQ40l7/J5mvywBD3nMlDpL4RJWL5AGfFwmrk00PKBSfxyFIV9gxn164gL+UaNAMDKCOr5Nu5vFPUeONtIbawoj9i6l9IJioEv+amm6Kjhk8s3T7SVhcKsjGsHxS2Zfk8=" FechaTimbrado="2013-04-09T20:42:57" UUID="4169B518-7D6F-4D7B-AAD1-058E7FB3DD22" noCertificadoSAT="00001000000202864530" version="1.0" selloSAT="nLhjjt9BTuhFT5K2kGKcPmOR7m3sskGPIGcZXdbao322omj0t36EFx/vkYrRQ7APIt8HqVDTXY5mRI8Ss/F+reC80XwHe1bSr1pz2gTk2LJh1BsdpRnGIAk5w0Hsv9BBqYMdPzFDJqwfQS2tZjLWvolj1oEC+lhu87upvrVRumM="/></cfdi:Complemento>
</cfdi:Comprobante>
en el texto resaltado es donde tengo el problema al tratar de recuperar la cadena ya que esos espacios que se observan en realidad no son espacios es el ascci 160 y 160 y al obtener la cadena con los archivos de transformacion me da un ascii de 32 y 32.
Haber si me pueden orientar, con el ValidaCFD si me lo valida bien aunque la cadena que extrae los cambia por a verdaderos espacios
<?xml version="1.0" encoding="UTF-8"?>
<cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd " version="3.2" serie="C" folio="14170" fecha="2013-04-09T20:38:27" sello="YiUFfEhiK4ekcLH5TAp+6yfEWtjK3jMxdsFML7lNY61CQ40l7/J5mvywBD3nMlDpL4RJWL5AGfFwmrk00PKBSfxyFIV9gxn164gL+UaNAMDKCOr5Nu5vFPUeONtIbawoj9i6l9IJioEv+amm6Kjhk8s3T7SVhcKsjGsHxS2Zfk8=" formaDePago="PAGO EN UNA SOLA EXHIBICION" noCertificado="00001000000104472370" certificado="MIIEHzCCAwegAwIBAgIUMDAwMDEwMDAwMDAxMDQ0NzIzNzAwDQYJKoZIhvcNAQEFBQAwggE2MTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWEGFjb2RzQHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJFJlc3BvbnNhYmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczAeFw0xMTEwMDQyMjMyMzBaFw0xMzEwMDMyMjMyMzBaMIG/MRwwGgYDVQQDExNDQUJPIE9FU1RFIFNBIERFIENWMRwwGgYDVQQpExNDQUJPIE9FU1RFIFNBIERFIENWMRwwGgYDVQQKExNDQUJPIE9FU1RFIFNBIERFIENWMSUwIwYDVQQtExxDT0UwNzA5MTA0OTMgLyBDQUdCNzIwOTE0NzI3MR4wHAYDVQQFExUgLyBDQUdCNzIwOTE0SE5MU01SMDQxHDAaBgNVBAsTE0NBQk8gT0VTVEUgU0EgREUgQ1YwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMNpNcZD1I1PCX8+7zh1Wu3BGZVIPyfKSV1bBpXzRUt25isSDcjbfp1id6JtFmFdipFWL2gX2GzqAfNC7l0naB0z2mvyWAVkEJFErbrH5huJBl87X6ZqsHdyI1k+m3wz6QdT3T2dHFnRE5oFoBqCmbYDTYjJo7oVUClkzqCnpjB7AgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBBQUAA4IBAQBLgDlcmDMJKuc0AytBS8fJ+2n+OZxV3d1MxFoeZ53I/C5GGaWKrNnApiedwMSUz+QH3MKJbGtkqEI5OyxHawcbRX/sAv8E7itxdU+4Wxw5roxkNz+lWgYT+MroyIrN/OLI6gXVzpikDje21TbE1Cy1F0viGfcD/9GrQ3VvtKgcxP60PA8srdB0Lon47Pp0jhcRBb6P/xvo0fQE+IcapVdie7H2gKLR/jlKOcTdVbqm9cy3UL/n3L3XfJCFLuJaUNKqR8aBrQzp9RfTINnKat1LJ28vVdJZq956YXG1boPr37E586N/8tUV4w1jYRuUHP6Fjw+giHV0bC8JlHgSWssT" subTotal="207.75" total="240.99" tipoDeComprobante="ingreso" metodoDePago="NO IDENTIFICADO" LugarExpedicion="PASEO DE LOS LEONES 1800 COL. COL. CUMBRES 2° SECTOR
C.P. 64610 MONTERREY, NUEVO LEON">
<cfdi:Emisor rfc="COE070910493" nombre="CABO OESTE SA DE CV">
<cfdi:DomicilioFiscal calle="ESPAÑA" noExterior="411" colonia="INDUSTRIAL MARTEL" localidad="SANTA CATARINA" municipio="SANTA CATARINA" estado="NUEVO LEON" pais="MEXICO" codigoPostal="66367"/>
<cfdi:ExpedidoEn calle="PASEO DE LOS LEONES" noExterior="1800" colonia="COL. CUMBRES 2° SECTOR " estado="NUEVO LEON" pais="MEXICO" codigoPostal="64610"/>
<cfdi:RegimenFiscal Regimen="Regimen general de personas morales"/>
</cfdi:Emisor>
<cfdi:Receptor rfc="ROTM840519210" nombre="RODRIGUEZ TORRES MICHAEL ALBERT">
<cfdi:Domicilio calle="RIO BLANCO" noExterior="4100" noInterior="54" colonia="VALLE DE SAN ISIDRO" municipio="ZAPOPAN" codigoPostal="45130" estado="JALISCO" pais="MEXICO"/>
</cfdi:Receptor>
<cfdi:Conceptos>
<cfdi:Concepto cantidad="1.00" unidad="NO APLICA" noIdentificacion="000001" descripcion="CONSUMO DE ALIMENTO" valorUnitario="207.75" importe="207.75"/>
</cfdi:Conceptos>
<cfdi:Impuestos totalImpuestosTrasladados="33.24"><cfdi:Traslados><cfdi:Traslado impuesto="IVA" tasa="16.00" importe="33.24"/></cfdi:Traslados></cfdi:Impuestos>
<cfdi:Complemento><tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigit ... igital.xsd" selloCFD="YiUFfEhiK4ekcLH5TAp+6yfEWtjK3jMxdsFML7lNY61CQ40l7/J5mvywBD3nMlDpL4RJWL5AGfFwmrk00PKBSfxyFIV9gxn164gL+UaNAMDKCOr5Nu5vFPUeONtIbawoj9i6l9IJioEv+amm6Kjhk8s3T7SVhcKsjGsHxS2Zfk8=" FechaTimbrado="2013-04-09T20:42:57" UUID="4169B518-7D6F-4D7B-AAD1-058E7FB3DD22" noCertificadoSAT="00001000000202864530" version="1.0" selloSAT="nLhjjt9BTuhFT5K2kGKcPmOR7m3sskGPIGcZXdbao322omj0t36EFx/vkYrRQ7APIt8HqVDTXY5mRI8Ss/F+reC80XwHe1bSr1pz2gTk2LJh1BsdpRnGIAk5w0Hsv9BBqYMdPzFDJqwfQS2tZjLWvolj1oEC+lhu87upvrVRumM="/></cfdi:Complemento>
</cfdi:Comprobante>
en el texto resaltado es donde tengo el problema al tratar de recuperar la cadena ya que esos espacios que se observan en realidad no son espacios es el ascci 160 y 160 y al obtener la cadena con los archivos de transformacion me da un ascii de 32 y 32.
Haber si me pueden orientar, con el ValidaCFD si me lo valida bien aunque la cadena que extrae los cambia por a verdaderos espacios
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: CHR(160) VS CHR(32)
Sube como adjunto el XML, asi con copiar y pegar no sirve para analizar
Por cierto el codigo
es la codificacion xml del retorno de carro (chr(10)), es decir, nada que ver con el chr(160) o el chr(32); como que estas revolviendo ideas
Por cierto el codigo
es la codificacion xml del retorno de carro (chr(10)), es decir, nada que ver con el chr(160) o el chr(32); como que estas revolviendo ideas
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 8
- Registrado: Mié Abr 17, 2013 3:17 pm
Re: CHR(160) VS CHR(32)
Buenos dias Adunto el archivo con el cual traigo el problema para obtener la cadena correcta, Gracias.
- Adjuntos
-
- FA-C014170-COE070910493.zip
- Adjunto el xml el problema esta 2 caracteres antes de 

- (2.44 KiB) Descargado 475 veces
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: CHR(160) VS CHR(32)
Revisandolo con el editor hexadecimal veo que si tienes varios caracteres que no deberian estar ahi, esta mas enredado de lo que aparenta, tiene dos espacios codificados con UTF8 (checa que se lleva DOS BYTES #c2 #a0) y aparte el retorno de carro codificado en XML
Y ya se porque el chr(160) se convierte a un espacio, lo que pasa es que en la tabla de codificacion ISO-Latin1 el caracter 160 corresponde a un nbsp (non-breaking space)
Bueno, y simplemente, porque no quitas todos esos caracteres raros, ponle a tu campo donde el cliente captura los datos una validacion para que no le sea posible capturar mas que letras y numeros y unos cuantos simbolos
Y ya se porque el chr(160) se convierte a un espacio, lo que pasa es que en la tabla de codificacion ISO-Latin1 el caracter 160 corresponde a un nbsp (non-breaking space)
Bueno, y simplemente, porque no quitas todos esos caracteres raros, ponle a tu campo donde el cliente captura los datos una validacion para que no le sea posible capturar mas que letras y numeros y unos cuantos simbolos
- Adjuntos
-
- Untitled.jpg (64.63 KiB) Visto 14069 veces
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 8
- Registrado: Mié Abr 17, 2013 3:17 pm
Re: CHR(160) VS CHR(32)
El problema NO es con las facturas(xml) que yo genero, en mi sistema si hago todas esas validaciones y todo bien, el problema es para validar los XML que yo recibo que fueron generados por cualquier sistema que no es el mío.
Tu ValidaCFD si puede obtener la cadena del XML tal cual, la misma que se uso para aplicar la digestion(SHA-1) y es por eso que en tu ValidaCFD marca que el sello es correcto y en el validador del SAT tambien marca que es correcto, es decir quiero que mi visor de XML's NO me marque que el sello es invalido cuando si es valido, y todo esto derivado porque no puedo obtener la cadena tal cual, la que se uso para sellar, se supone que los archivos de transformacion debería darme la cadena con esos caracteres raros, dado que no son espacios, alguna idea para resolver mi problema ... ?, gracias.
Tu ValidaCFD si puede obtener la cadena del XML tal cual, la misma que se uso para aplicar la digestion(SHA-1) y es por eso que en tu ValidaCFD marca que el sello es correcto y en el validador del SAT tambien marca que es correcto, es decir quiero que mi visor de XML's NO me marque que el sello es invalido cuando si es valido, y todo esto derivado porque no puedo obtener la cadena tal cual, la que se uso para sellar, se supone que los archivos de transformacion debería darme la cadena con esos caracteres raros, dado que no son espacios, alguna idea para resolver mi problema ... ?, gracias.
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: CHR(160) VS CHR(32)
Oh! ya veo tu dilema, asi recibiste el XML y no puedes validarlo con tu propio validador.
OK, una recomendacion, ignoralo, en el SAT y en otros validadores ya paso y el sello es valido.
De verdad, este XML tiene cosas muy complejas, a menos que el mismo cliente te envie otro XML no creo que vuelvas a tener el mismo caso, no creo que valga la pena dedicarle una semana de trabajo
Es solo mi humilde opinion, yo asi le hago en mi ValidaCFD, de verdad que tengo por aqui una docena de XML que amablemente me han enviado y que no validan, he calculado que mi ValidaCFD no puede validar uno de cada 300,000
Mira, para muestra adjunto uno de esos XML que el SAT si valida bien pero mi validador no, mi analisis dice que "algo" del concepto numero 5 es el problema, lo que hice fue ignorarlo, no he vuelto a tener este caso
OK, una recomendacion, ignoralo, en el SAT y en otros validadores ya paso y el sello es valido.
De verdad, este XML tiene cosas muy complejas, a menos que el mismo cliente te envie otro XML no creo que vuelvas a tener el mismo caso, no creo que valga la pena dedicarle una semana de trabajo
Es solo mi humilde opinion, yo asi le hago en mi ValidaCFD, de verdad que tengo por aqui una docena de XML que amablemente me han enviado y que no validan, he calculado que mi ValidaCFD no puede validar uno de cada 300,000
Mira, para muestra adjunto uno de esos XML que el SAT si valida bien pero mi validador no, mi analisis dice que "algo" del concepto numero 5 es el problema, lo que hice fue ignorarlo, no he vuelto a tener este caso
- Adjuntos
-
- SAT-OK, Valida-No.xml
- (8.57 KiB) Descargado 480 veces
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 8
- Registrado: Mié Abr 17, 2013 3:17 pm
Re: CHR(160) VS CHR(32)
Esque si tengo varios archivos(XML) asi de varios lados que me llegaron, de cualquier manera ya lo resolvi con el siguiente codigo en VFP:
******** Antes ********
tcURL = 'c:\archivo.xml' &&Ya tiene la referencia a los archivos XSLT
oIE=CREATEOBJECT("internetexplorer.application")
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
oIE.Navigate(tcURL)
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
oIE.ExecWB(17,2) &&Selecciona el texto
oIE.ExecWB(12,2) &&Copia al portapapeles
_CadenaOriginal = _CLIPTEXT
******** Ahora ********
tcURL = 'c:\archivo.xml'
oIE=CREATEOBJECT("internetexplorer.application")
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
oIE.Navigate(tcURL)
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
_CadenaOriginal = oIE.Document.Body.InnerHtml &&Obtengo la cadena original con todo y secuencias de escape
_CadenaOriginal = STRTRAN(_CadenaOriginal,' ',' ') &&y las cambio por el valor correcto, ' ' NO es un espacio
hago una instancia con el internet explorer, aplico los archivos XSLT y en vez de obtener la cadena desde el explorer(que es ahi donde cambia esos famosos caracteres raros a espacios) obtengo la cadena mediante codigo HTML y ahi vienen esos caracteres codificados con su secuencia de escape y entonces los cambio por su valor correspondiente y listo ya tengo la cadena original correcta.
Gracias por tu aporte.
******** Antes ********
tcURL = 'c:\archivo.xml' &&Ya tiene la referencia a los archivos XSLT
oIE=CREATEOBJECT("internetexplorer.application")
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
oIE.Navigate(tcURL)
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
oIE.ExecWB(17,2) &&Selecciona el texto
oIE.ExecWB(12,2) &&Copia al portapapeles
_CadenaOriginal = _CLIPTEXT
******** Ahora ********
tcURL = 'c:\archivo.xml'
oIE=CREATEOBJECT("internetexplorer.application")
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
oIE.Navigate(tcURL)
IF oIE.BUSY=.T.
INKEY(.1)
ENDIF
_CadenaOriginal = oIE.Document.Body.InnerHtml &&Obtengo la cadena original con todo y secuencias de escape
_CadenaOriginal = STRTRAN(_CadenaOriginal,' ',' ') &&y las cambio por el valor correcto, ' ' NO es un espacio
hago una instancia con el internet explorer, aplico los archivos XSLT y en vez de obtener la cadena desde el explorer(que es ahi donde cambia esos famosos caracteres raros a espacios) obtengo la cadena mediante codigo HTML y ahi vienen esos caracteres codificados con su secuencia de escape y entonces los cambio por su valor correspondiente y listo ya tengo la cadena original correcta.
Gracias por tu aporte.