Page 1 of 1

ot: leer xml que contiene una firma electrónica

Posted: Thu Mar 07, 2019 1:51 am
by wilsongamboa
estimados colegas buenas noches no puedo leer este texto xml usando el siguiente codigo

Code: Select all

#include "FiveWin.ch"

function Main()

local hFile := FOpen( "a.xml" ) 
Local oXmlDoc := TXmlDocument():New( hFile )
Local oXmlIter := TXmlIterator():New( oXmlDoc:oRoot ), oTagActual

while .T.
oTagActual = oXmlIter:Next()
If oTagActual != nil
//MsgInfo( oTagActual:cName, oTagActual:cData )
HEval( oTagActual:aAttributes, { | cKey, cValue | MsgInfo( cKey, cValue ) } )
Else
Exit
Endif
End

FClose( hFile )

return nil
el archivo xml contiene la siguiente info

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?><ec.facturacionelectronica.aut.Autorizacion>
  <estado>AUTORIZADO</estado>
  <numeroAutorizacion>0301201801160016779300110010010000065780000657813</numeroAutorizacion>
  <fechaAutorizacion class="fechaAutorizacion">03/01/2018 00:16:43.000</fechaAutorizacion>
  <comprobante><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<factura id="comprobante" version="1.0.0">
<infoTributaria>
<ambiente>1</ambiente>
<tipoEmision>1</tipoEmision>
<razonSocial>GAMBOA ACOSTA WILSON GUSTAVO</razonSocial>
<nombreComercial>GAMBOA ACOSTA WILSON GUSTAVO</nombreComercial>
<ruc>1600167793001</ruc>
<claveAcceso>0301201801160016779300110010010000065780000657813</claveAcceso>
<codDoc>01</codDoc>
<estab>001</estab>
<ptoEmi>001</ptoEmi>
<secuencial>000006578</secuencial>
<dirMatriz>Julio Cesar VillaCrez y Av Occidental</dirMatriz>
</infoTributaria>
<infoFactura>
<fechaEmision>03/01/2018</fechaEmision>
<dirEstablecimiento>JULIO CESAR VILLACREZ Y AV OCC</dirEstablecimiento>
<contribuyenteEspecial>000</contribuyenteEspecial>
<obligadoContabilidad>SI</obligadoContabilidad>
<tipoIdentificacionComprador>04</tipoIdentificacionComprador>
<guiaRemision>001-001-000006578</guiaRemision>
<razonSocialComprador>GAMBOA ACOSTA WILSON GUSTAVO</razonSocialComprador>
<identificacionComprador>1600167793001</identificacionComprador>
<totalSinImpuestos>20.00</totalSinImpuestos>
<totalDescuento>0.01</totalDescuento>
<totalConImpuestos>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<baseImponible>20.00</baseImponible>
<valor>2.40</valor>
</totalImpuesto>
<totalImpuesto>
<codigo>2</codigo>
<codigoPorcentaje>0</codigoPorcentaje>
<baseImponible>0.00</baseImponible>
<valor>0.00</valor>
</totalImpuesto>
</totalConImpuestos>
<propina>0.00</propina>
<importeTotal>22.40</importeTotal>
<moneda>DOLAR</moneda>
<pagos>
 <pago>
  <formaPago>20</formaPago>
  <total>22.40</total>
  <plazo>0</plazo>
  <unidadTiempo>dias</unidadTiempo>
 </pago>
</pagos>
</infoFactura>
<detalles>
<detalle>
<codigoPrincipal>05</codigoPrincipal>
<descripcion>TRABAJOS PUNTUALES</descripcion>
<cantidad>1.00</cantidad>
<precioUnitario>20.01</precioUnitario>
<descuento>0.01</descuento>
<precioTotalSinImpuesto>20.00</precioTotalSinImpuesto>
<impuestos>
<impuesto>
<codigo>2</codigo>
<codigoPorcentaje>2</codigoPorcentaje>
<tarifa>12</tarifa>
<baseImponible>20.00</baseImponible>
<valor>2.40</valor>
</impuesto>
</impuestos>
</detalle>
</detalles>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#" Id="Signature231907">
<ds:SignedInfo Id="Signature-SignedInfo741236">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
<ds:Reference Id="SignedPropertiesID595265" Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature231907-SignedProperties805022">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
<ds:DigestValue>/40qUKlsaim69OPX2WLrs29IjP0=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#Certificate1447553">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
<ds:DigestValue>Tm3lSzc/RhTtJf21VrOVSD0AlGU=</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="Reference-ID-254489" URI="#comprobante">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
<ds:DigestValue>49rYzgpVSwGBFoO9BQ6LDVV4vPU=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="SignatureValue65072">
bErZjj8XjLJrUZcML4wLtdBRMeeaPzGoC1I0ovcW5bO08FrfqLLZMHsOQYub7p/gtiE2yTd/luvK
pwD/pwDKTBSDi8ppa+TUANL2wfHWwPcMJzNK6VLlDktZxb0RDajpX16PMj0YwL9g8LNmJnzKEcAt
FoLjfdMBLpEkeiVBrYr2VvwP2ImKxucF9ID5/zBuUkwsXLkCArbb4qvG9sAhe+RbIuKNvBHBRb/b
Xnq0vItWB7BRdlBEc09/EX8mbRD+G552F6Toq6aXRiFRcZ97KETQJAEswdwKFGB3d4yzggYb/9lW
eGVhOlemBicky320ticoAPdbU0jv/mpgKvd8OA==
</ds:SignatureValue>
<ds:KeyInfo Id="Certificate1447553">
<ds:X509Data>
<ds:X509Certificate>
MIIJNDCCBxygAwIBAgIEWH+XfDANBgkqhkiG9w0BAQsFADCBoTELMAkGA1UEBhMCRUMxIjAgBgNV
BAoTGUJBTkNPIENFTlRSQUwgREVMIEVDVUFET1IxNzA1BgNVBAsTLkVOVElEQUQgREUgQ0VSVElG
SUNBQ0lPTiBERSBJTkZPUk1BQ0lPTi1FQ0lCQ0UxDjAMBgNVBAcTBVFVSVRPMSUwIwYDVQQDExxB
QyBCQU5DTyBDRU5UUkFMIERFTCBFQ1VBRE9SMB4XDTE3MTIyNzE5MDAwOVoXDTE5MTIyNzE5MzAw
OVowgbQxCzAJBgNVBAYTAkVDMSIwIAYDVQQKExlCQU5DTyBDRU5UUkFMIERFTCBFQ1VBRE9SMTcw
NQYDVQQLEy5FTlRJREFEIERFIENFUlRJRklDQUNJT04gREUgSU5GT1JNQUNJT04tRUNJQkNFMQ4w
DAYDVQQHEwVRVUlUTzE4MBEGA1UEBRMKMDAwMDI0NzcwMjAjBgNVBAMTHFdJTFNPTiBHVVNUQVZP
IEdBTUJPQSBBQ09TVEEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCnKUluUd+Ht9XE
C4DMz0O0dBJnfK+fXRG47r5WhE1/7Np/CMZS/NqjhLEvL9sUgyx7qvtxa2lM0ZjWC4b8bLIJNBhc
vyrycMt3nH4yuYe8Rc3zEkcr8HiwlTS0J2/KsKDhL+i6ZADYzL0dGg0JqmW+KgEqPWKw3zfOk3bS
3ENLJdbfn3FHz42XLiVDfbE/s7M9m6t2QWtruezKl/6oLIXJTjJwhBrjiHaYSHyYKg5GWBFSnvGK
8Ve+VA2+wwhp+8F1qgYMTkGtMp/gAhmLD/Dkt0hNRXXon9PIxCHZlPLrOor//GHy03HF/gnB/mrk
ebG9TguMszJHWLku0LRUeDDRAgMBAAGjggRdMIIEWTALBgNVHQ8EBAMCBSAwgZEGCCsGAQUFBwEB
BIGEMIGBMD4GCCsGAQUFBzABhjJodHRwOi8vb2NzcC5lY2kuYmNlLmVjL2VqYmNhL3B1YmxpY3dl
Yi9zdGF0dXMvb2NzcDA/BggrBgEFBQcwAYYzaHR0cDovL29jc3AxLmVjaS5iY2UuZWMvZWpiY2Ev
cHVibGljd2ViL3N0YXR1cy9vY3NwMBoGCisGAQQBgqg7AwEEDBMKMTYwMDE2Nzc5MzAeBgorBgEE
AYKoOwMCBBATDldJTFNPTiBHVVNUQVZPMBYGCisGAQQBgqg7AwMECBMGR0FNQk9BMBYGCisGAQQB
gqg7AwQECBMGQUNPU1RBMFAGCisGAQQBgqg7AwcEQhNASlVMSU8gQ0VTQVIgVklMTEFDUkVaIFkg
QVYgT0NDSURFTlRBTCBDT05KVU5UTyBDQVNURUxMRVQgQ0FTQSAzNDAZBgorBgEEAYKoOwMIBAsT
CTAyMzM5MDcxNDAVBgorBgEEAYKoOwMJBAcTBVF1aXRvMBcGCisGAQQBgqg7AwwECRMHRUNVQURP
UjAdBgorBgEEAYKoOwMLBA8TDTE2MDAxNjc3OTMwMDEwIAYKKwYBBAGCqDsDMwQSExBTT0ZUV0FS
RS1BUkNISVZPMCMGA1UdEQQcMBqBGHdpbHNvbi5qb3NlbmV0QGdtYWlsLmNvbTCCAd8GA1UdHwSC
AdYwggHSMIIBzqCCAcqgggHGhoHVbGRhcDovL2JjZXFsZGFwc3VicDEuYmNlLmVjL2NuPUNSTDQ5
Mixjbj1BQyUyMEJBTkNPJTIwQ0VOVFJBTCUyMERFTCUyMEVDVUFET1IsbD1RVUlUTyxvdT1FTlRJ
REFEJTIwREUlMjBDRVJUSUZJQ0FDSU9OJTIwREUlMjBJTkZPUk1BQ0lPTi1FQ0lCQ0Usbz1CQU5D
TyUyMENFTlRSQUwlMjBERUwlMjBFQ1VBRE9SLGM9RUM/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlz
dD9iYXNlhjRodHRwOi8vd3d3LmVjaS5iY2UuZWMvQ1JML2VjaV9iY2VfZWNfY3JsZmlsZWNvbWIu
Y3JspIG1MIGyMQswCQYDVQQGEwJFQzEiMCAGA1UEChMZQkFOQ08gQ0VOVFJBTCBERUwgRUNVQURP
UjE3MDUGA1UECxMuRU5USURBRCBERSBDRVJUSUZJQ0FDSU9OIERFIElORk9STUFDSU9OLUVDSUJD
RTEOMAwGA1UEBxMFUVVJVE8xJTAjBgNVBAMTHEFDIEJBTkNPIENFTlRSQUwgREVMIEVDVUFET1Ix
DzANBgNVBAMTBkNSTDQ5MjAfBgNVHSMEGDAWgBQY+fD75jIcmWY5KsqLsml9SSe/zjAdBgNVHQ4E
FgQUHfpEStT2OAP8DYvG7aZMVG3HFSAwCQYDVR0TBAIwADAZBgkqhkiG9n0HQQAEDDAKGwRWOC4x
AwIEsDANBgkqhkiG9w0BAQsFAAOCAgEAqyWgCW+DHkjWQdS82JQjqxWgIx6ee9LbNduxaUWLY2Wp
TNNY9/KQ+6faztRA0jf4IMRoyUivFg+0LpgKjv0m1BdG2d4/7laYjbE+1t9dn8O0x5cU6tuFOmyq
gr9sBIJRiUrgI95JXxDrDt09LB2sajL8+JKJitKd0rGPXsfHPqgXjTq/qjcWMjjenIMOJ53cOpuf
SNisNH9fpy2sPnX03nI1Jt0aNYKGfcFq2XI352rP1xiKUZhb5JpQjuFTN9PkLRFXzgq24hDsfukV
KhR9+hpr5/psb0I05mpP28X8HPzjC0P65xs6aEA2NjNelgfxsbpKVi8a1y83RGpXRmXk76oK3/QA
dZTw53xBD5dyNYw2uOuqfpe2HVfCEWss05ipXbaPlTWfnhCKFtYDOvSHagZenf9E2G+KuRKx0D0c
XmRbig12FILwUBslYw4JK6SLDQ2oqKNc5yawy92HV+eV7VkpD/3MyMHlxKiKAtDw0ZHAmk+4BTU7
tT81pMCemRkGbZUtSFxoJMWoOpqqfe/r139DsoJQdfU3ezcj9+inSmTZs0R3aGvRkiduCkz8hKmz
jXczK9NfflN9muUhV3oTeaWqfbcCkoauJRc2HcB0gwumZq5BrbSlDdnBkfOmyrjK/4rwQuHnZhIR
BEGUR/CaLZIJGnOG0TZ3ZdSuqF5MRuA=
</ds:X509Certificate>
</ds:X509Data>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>
pylJblHfh7fVxAuAzM9DtHQSZ3yvn10RuO6+VoRNf+zafwjGUvzao4SxLy/bFIMse6r7cWtpTNGY
1guG/GyyCTQYXL8q8nDLd5x+MrmHvEXN8xJHK/B4sJU0tCdvyrCg4S/oumQA2My9HRoNCaplvioB
Kj1isN83zpN20txDSyXW359xR8+Nly4lQ32xP7OzPZurdkFra7nsypf+qCyFyU4ycIQa44h2mEh8
mCoORlgRUp7xivFXvlQNvsMIafvBdaoGDE5BrTKf4AIZiw/w5LdITUV16J/TyMQh2ZTy6zqK//xh
8tNxxf4Jwf5q5HmxvU4LjLMyR1i5LtC0VHgw0Q==
</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
<ds:Object Id="Signature231907-Object505482"><etsi:QualifyingProperties Target="#Signature231907"><etsi:SignedProperties Id="Signature231907-SignedProperties805022"><etsi:SignedSignatureProperties><etsi:SigningTime>2018-01-03T00:16:40-05:00</etsi:SigningTime><etsi:SigningCertificate><etsi:Cert><etsi:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod><ds:DigestValue>8NcigKjkG+iHTHXkCUGPx4hjSa0=</ds:DigestValue></etsi:CertDigest><etsi:IssuerSerial><ds:X509IssuerName>CN=AC BANCO CENTRAL DEL ECUADOR,L=QUITO,OU=ENTIDAD DE CERTIFICACION DE INFORMACION-ECIBCE,O=BANCO CENTRAL DEL ECUADOR,C=EC</ds:X509IssuerName><ds:X509SerialNumber>1484756860</ds:X509SerialNumber></etsi:IssuerSerial></etsi:Cert></etsi:SigningCertificate></etsi:SignedSignatureProperties><etsi:SignedDataObjectProperties><etsi:DataObjectFormat ObjectReference="#Reference-ID-254489"><etsi:Description>contenido comprobante</etsi:Description><etsi:MimeType>text/xml</etsi:MimeType></etsi:DataObjectFormat></etsi:SignedDataObjectProperties></etsi:SignedProperties></etsi:QualifyingProperties></ds:Object></ds:Signature></factura>]]></comprobante>
  <mensajes/>
</ec.facturacionelectronica.aut.Autorizacion>
alguna idea ?
gracias por su tiempo
saludos

Re: ot: leer xml que contiene una firma electrónica

Posted: Thu Mar 07, 2019 2:15 pm
by thefull
Lo que tienes que hacer es coger el valor del CDATA, y esa cadena, VUELVES a cargar el documento con ese string
Es que te han metido un XML dentro de otro XML a traves del CDATA.

Saludos

Re: ot: leer xml que contiene una firma electrónica

Posted: Fri Mar 08, 2019 11:07 pm
by wilsongamboa
muchas gracias maestro lo pruebo y comento
saludos