Re: [gx-l] Leer XML's datos.

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()
 
From: Alonso C E
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