Hola Alonso te paso este codigo para lectura de XML espero te sirva.
&LeeFileXML.Open(&Archivo)
// Inicia nodo comprobante
&exito = &LeeFileXML.ReadType(1,'Comprobante')
&Dato = &LeeFileXML.GetAttributeByName('serie')
If &Dato <> ''
&FacCar = &Dato + ' '
Endif
&Dato = &LeeFileXML.GetAttributeByName('folio')
&NccNum2 = Val(&Dato)
&FacCar = &FacCar+ToFormattedString(&NccNum2)
&Fecha = &LeeFileXML.GetAttributeByName('fecha')
&Fecha2 = SubStr(&Fecha,9,2)+'/'+SubStr(&Fecha,6,2)+'/'+SubStr(&Fecha,1,4)
&Sello = &LeeFileXML.GetAttributeByName('sello')
&CgaNApro = &LeeFileXML.GetAttributeByName('noAprobacion')
&CgaAApro = Val(&LeeFileXML.GetAttributeByName('anoAprobacion'))
&Dato = &LeeFileXML.GetAttributeByName('tipoDeComprobante')
&Ley = &LeeFileXML.GetAttributeByName('formaDePago')
Call(PSacaDobleEspacio,&Ley)
&Condi = &LeeFileXML.GetAttributeByName('condicionesDePago')
&CgaNCer = &LeeFileXML.GetAttributeByName('noCertificado')
&SumatotIngre = Val(&LeeFileXML.GetAttributeByName('subTotal'))
&Total = Val(&LeeFileXML.GetAttributeByName('total'))
&Importe=round(&Total,2)
call(PImp2Text,&Importe,&Letras)
// Finaliza Nodo Comprobante
// Nodo Emisor
&exito = &LeeFileXML.ReadType(1,'Emisor')
&RFC = &LeeFileXML.GetAttributeByName('rfc')
&Emisor = &LeeFileXML.GetAttributeByName('nombre')
// Finaliza Nodo Emisor
// Inicia Nodo DomicilioFiscal
&exito = &LeeFileXML.ReadType(1,'DomicilioFiscal')
&Domicilio1 = &LeeFileXML.GetAttributeByName('calle')
&Dato = &LeeFileXML.GetAttributeByName('noExterior')
If &Dato <> ''
&Domicilio1 = &Domicilio1+' #'+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('noInterior')
If &Dato <> ''
&Domicilio1 = &Domicilio1+' INT.'+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('colonia')
If &Dato <> ''
&Domicilio2 = 'COL. '+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('localidad')
If &Dato <> ''
&Domicilio2 = &Domicilio2+' LOC.'+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('referencia')
If &Dato <> ''
&Domicilio2 = &Domicilio2+' REF. '+&Dato
Endif
&Domicilio3 = &LeeFileXML.GetAttributeByName('municipio')
&Domicilio3 = &Domicilio3+', '+&LeeFileXML.GetAttributeByName('estado')
&Domicilio3 = &Domicilio3+', '+&LeeFileXML.GetAttributeByName('pais')
&Dato = &LeeFileXML.GetAttributeByName('codigoPostal')
&Domicilio2 = &Domicilio2 + ' C.P. '+&Dato
// Finaliza Nodo DomicilioFiscal
// Inicia Nodo ExpedidoEn
&exito = &LeeFileXML.ReadType(1,'ExpedidoEn')
If &exito <> 0
&Expedido = 'EXPEDIDO EN: '
&Expedido = &Expedido + ' ' + &LeeFileXML.GetAttributeByName('calle')
&Dato = &LeeFileXML.GetAttributeByName('noExterior')
If &Dato <> ''
&Expedido = &Expedido +' #'+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('noInterior')
If &Dato <> ''
&Expedido = &Expedido +' INT.'+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('colonia')
If &Dato <> ''
&Expedido = &Expedido + ' COL. '+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('localidad')
If &Dato <> ''
&Expedido = &Expedido+' LOC. '+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('municipio')
If &Dato <> ''
&Expedido = &Expedido+' MUN. '+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('estado')
If &Dato <> ''
&Expedido = &Expedido+', '+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('pais')
If &Dato <> ''
&Expedido = &Expedido+', '+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('codigoPostal')
if &Dato <> ''
&Expedido = &Expedido+' C.P: '+&Dato
Endif
Else
&LeeFileXML.Close()
&LeeFileXML.Open(&Archivo)
Endif
// Finaliza Nodo ExpedidoEn
// Inicia Nodo Receptor
&exito = &LeeFileXML.ReadType(1,'Receptor')
&CliRFC = &LeeFileXML.GetAttributeByName('rfc')
&CliNom = &LeeFileXML.GetAttributeByName('nombre')
// Finaliza Nodo Receptor
// Inicia Nodo Domicilio
&exito = &LeeFileXML.ReadType(1,'Domicilio')
&CliDom = &LeeFileXML.GetAttributeByName('calle')
&Dato = &LeeFileXML.GetAttributeByName('noExterior')
If &Dato <> ''
&CliDom = &CliDom+' #'+&Dato
Endif
&Dato = &LeeFileXML.GetAttributeByName('noInterior')
If &Dato <> ''
&CliDom = &CliDom+' Int.'+&Dato
Endif
&CliCol = &LeeFileXML.GetAttributeByName('colonia')
&CliLoc = &LeeFileXML.GetAttributeByName('localidad')
&CLiRef = &LeeFileXML.GetAttributeByName('referencia')
&CliMun = &LeeFileXML.GetAttributeByName('municipio')
&CliEst = &LeeFileXML.GetAttributeByName('estado')
&CliPai = &LeeFileXML.GetAttributeByName('pais')
&CliCpo = &LeeFileXML.GetAttributeByName('codigoPostal')
If &CliCol > ''
&CliCol = 'COL.' + &CliCol
Endif
IF &CliLoc > '' and &CliCol > ''
&CliCol = &CliCol +', '+&CliLoc
Endif
If &CliMun > '' and &CliCol > ''
&CliCol = &CliCol + ', '+&CliMun
Endif
If &CliEst > ''
&CliEst = &CliEst + ', '+&CliPai
Else
&CliEst = &CliPai
Endif
// Finaliza Nodo Domicilio
// Inicia Nodo Impuestos
&exito = &LeeFileXML.ReadType(1,'Impuestos')
&TotImpRet = Val(&LeeFileXML.GetAttributeByName('totalImpuestosRetenidos'))
&TotImpTra = Val(&LeeFileXML.GetAttributeByName('totalImpuestosTrasladados'))
&exito = &LeeFileXML.ReadType(1,'InformacionComplementaria')
&Observa1 = &LeeFileXML.GetAttributeByName('observacionesCampo1')
&Observa2 = &LeeFileXML.GetAttributeByName('observacionesCampo2')
&Observa3 = &LeeFileXML.GetAttributeByName('observacionesCampo3')
// Incia Nodo Conceptos
&exito = &LeeFileXML.ReadType(1,'InformacionConceptos')
&LeeFileXML.Read()
&x = 1
Do while &LeeFileXML.Name = 'InformaConcepto'
&Dato = &LeeFileXML.GetAttributeByName('cantidad')
&Cant(&x) = Val(&Dato)
&Dato = &LeeFileXML.GetAttributeByName('descripcion')
&Descrip(&x) = Trim(&Dato)
&Dato = &LeeFileXML.GetAttributeByName('valorUnitario')
&ValUni(&x) = Val(&Dato)
&Dato = &LeeFileXML.GetAttributeByName('importe')
&Impor(&x) = Val(&Dato)
&LeeFileXML.Read()
&x += 1
Enddo
// Finaliza Nodo Conceptos
&LeeFileXML.Read()
&LeeFileXML.Read()
// Finaliza Nodo Impuestos
&LeeFileXML.Close()
Sent: Saturday, September 22, 2012 11:19 AM
Subject: [gx-l] Leer XML's datos.
Buen dia a todos tengo este xml
Y no he podido la forma de leer la información donde esta por ejemplo serie, folio, total entre otros.
Se que esta dentro del Comprobante serie y folio, pero no como acceder a ellos como también en el tag de emisor que esta el rfc, nombre.
Alguien me podría indicar como se hace con que funciones,
Nota. Encontré un ejemplo aquí en foro como leer los <Conceptos> y funciona muy bien, solo que no he podido como leer la otra información.
ante mano muchas gracias.
xml version="1.0" encoding="UTF-8" ?>
- <Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd" version="2.0" serie="A" folio="1344" fecha="2011-07-26T17:08:31" noAprobacion="379053" anoAprobacion="2010" formaDePago="Pago en una sola exhibición" noCertificado="00001000000102489917" condicionesDePago="Crédito" subTotal="8788.38" total="10194.52" tipoDeComprobante="ingreso" sello="BAXrXAdZqZ9NjNacH/yCpuW7EVlAVjY8anAKYjvB/G/QN4MUT5BIRyl9Wb6lUH82Kmrb5gnJfOhunnP+5or1iedsAoNIiOiKVpyW6p3POyWM4Wwr628kyPYC/+ozIzrLHxS+kuzeJS9c0LL7TbRuw++OieriaEC7ZpRHT9WGFTc=" certificado="MIIEGTCCAwGgAwIBAgIUMDAwMDEwMDAwMDAxMDI0ODk5MTcwDQYJKoZIhvcNAQEFBQAwggE2MTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWEGFjb2RzQHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJFJlc3BvbnNhYmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczAeFw0xMDEyMjMxODM2NTVaFw0xMjEyMjIxODM2NTVaMIG5MSAwHgYDVQQDExdKT1NFIExVSVMgWUFNVU5JIEhBTExBTDEgMB4GA1UEKRMXSk9TRSBMVUlTIFlBTVVOSSBIQUxMQUwxIDAeBgNVBAoTF0pPU0UgTFVJUyBZQU1VTkkgSEFMTEFMMRYwFAYDVQQtEw1ZQUhMMzgwNTEzN1k5MRswGQYDVQQFExJZQUhMMzgwNTEzSFNMTUxTMDkxHDAaBgNVBAsTE0xPUyBNT0NISVMsIFNJTkFMT0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMbDCv9M3iJlKGGKlk6NGLUvm/3a6atZ8CHX4OW2lKR+jtyb3FGtbGwcZauW+zpYHNpnn5r8k9GdP1BA8Snj3S/sAV0s9ukcDh9DLZjSjAbbNImCXGlak6xAR4QFnEzetR4OBSiJWfyaoAZPch+IP3s81UGCGHzUFV9cTxv+hwXLAgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBBQUAA4IBAQDPwILPz6qUUANpyzmsYiNMsk3ItOWkxbcuVSdweHbbTs8LS0eGX7+9taUdqU9lhQG1HrR4rcCnRcw1FlVpBHzpQ9YSiYDmvl7N0aWcWP8PUEOnOhd1+Nn1EQqh0G1NhhdV7NpcQdaySDz97Xwt5m9aFFNgsyKSqSsu26E9TUZOGU4TBt4hEriPS7y+dZSwvD8HljIg5n9VnHXjwG7uKTpJpMNE+JxaKKu810pSAQZ7AqJ5UbyraIKLh16jMtrHRs11zVfkU8DOP+xe1MtvMsRenZV7uDNQrmfkIMT7bdiJFF8+TsN9mKIdyln90rtPCgPJ7WrPjMMG8H8/eE0wX14p">
- <Emisor rfc="YAHL3805137Y9" nombre="LUIS HALLAL">
<DomicilioFiscal calle="NIñOS HEROES" noExterior="255 SUR" colonia="CENTRO" localidad="LOS MOCHIS" municipio="AHOME" estado="SINALOA" pais="MéXICO" codigoPostal="81200" />
</Emisor>
- <Receptor rfc="PEM990101HOM" nombre="PRODUCTORA DE EMPAQUES S.A. DE C.V.">
<Domicilio calle="CARLOS CONANT NORTE" noExterior="532" colonia="SIEMPRE VIVA" localidad="OBREGON" municipio="CAJEME" estado="SONORA." pais="MEXICO" codigoPostal="85000" />
</Receptor>
- <Conceptos>
<Concepto cantidad="3" descripcion="B CAMISA PROPULSOR DE ACERO INOX PARA BO" valorUnitario="1727.29" importe="5181.87" />
<Concepto cantidad="3" descripcion="B SELLO MECANICO 1" INOX. VITON COMPLETO" valorUnitario="1052.52" importe="3157.56" />
<Concepto cantidad="3" descripcion="B EMPAQUE ADAPTADOR BOMBA SS" valorUnitario="65.00" importe="195.00" />
<Concepto cantidad="3" descripcion="B TUERCA DE ACERO INOX. PARA IMPELENTE SS" valorUnitario="84.65" importe="253.95" />
<Concepto cantidad="0" descripcion="SUC. MEXICALI, B.C." valorUnitario="0.00" importe="0.00" />
</Conceptos>
- <Impuestos totalImpuestosTrasladados="1406.14">
- <Traslados>
<Traslado impuesto="IVA" tasa="16" importe="1406.14" />
</Traslados>
</Impuestos>
</Comprobante>
0 Response to "Re: [gx-l] Leer XML's datos."
Publicar un comentario