Leer un archivo xml

Post Reply
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Leer un archivo xml

Post by horacio »

Amigos, estoy tratando de leer un archivo xml pero tengo ciertas dificultades, tomé como punto de partida xmltree que lo lee perfectamente pero no necesito presentarlo como un árbol sino sacar ciertos datos de este archivo. Se me ocurrió poner los datos en un array pero no me lee todos los datos.

Este es un fragmento del xml

Code: Select all

        <deduccion tipo="7">
            <tipoDoc>80</tipoDoc>
            <nroDoc>30695303978</nroDoc>
            <denominacion>SUPER NUEVA COLON SRL</denominacion>
            <descBasica>30695303978 - SUPER NUEVA COLON SRL</descBasica>
            <montoTotal>769.80</montoTotal>
            <periodos>
                <periodo mesDesde="2" mesHasta="2" montoMensual="52.17"/>
                <periodo mesDesde="3" mesHasta="3" montoMensual="171.34"/>
                <periodo mesDesde="4" mesHasta="4" montoMensual="96.16"/>
                <periodo mesDesde="5" mesHasta="5" montoMensual="82.02"/>
                <periodo mesDesde="6" mesHasta="6" montoMensual="368.11"/>
            </periodos>
        </deduccion>
 
y esto es lo que obtengo en el array

Code: Select all

deduccion   
tipoDoc 80
nroDoc  30695303978
denominacion    SUPER NUEVA COLON SRL
descBasica  30695303978 - SUPER NUEVA COLON SRL
montoTotal  769.80
periodos    
periodo 
periodo 
periodo 
periodo 
periodo 
 
Este es el código de xmltree que modifiqué para que obtener un array

Code: Select all

   While( ( oTagActual := oXmlIter : Next() ) != nil )
      If( oTagLast != nil )
         If( oTagLast : Depth() < oTagActual : Depth() )
            ASize( aRoots, Len( aRoots ) + 1 )
            aRoots[ oTagActual : Depth() + 1 ] := aRoots[ oTagActual : Depth() ] : Add( oTagActual : cName )
            aRoots[ oTagActual : Depth() + 1 ] : Cargo := oTagActual
            Aadd( aDatos, { oTagActual : cName, oTagActual : cData } ) <- ARRAY
         End
         If( oTagLast : Depth() > oTagActual : Depth() )
            aRoots[ oTagActual : depth() + 1 ] := aRoots[ oTagActual : Depth() ] : Add( oTagActual : cName )
            aRoots[ oTagActual : depth() + 1 ] : Cargo := oTagActual
            Aadd( aDatos, { oTagActual : cName, oTagActual : cData } ) <- ARRAY
         End
         If( oTagLast : Depth() == oTagActual : Depth() )
            aRoots[ Max( oTagLast : Depth(), 1 ) ] : Add( oTagActual : cName ) : Cargo = oTagActual 
            Aadd( aDatos, { oTagActual : cName, oTagActual : cData } ) <- ARRAY
            End
      Else
         AAdd( aRoots, oTree : Add( oTagActual : cName ) )
         ATail( aRoots ) : Cargo = oTagActual
         Aadd( aDatos, { oTagActual : cName, oTagActual : cData } ) <- ARRAY
      End
      oTagLast := oTagActual
   Enddo
   xBrowser aDatos
    FClose( hFile )
   oTree : bChanged = { | oItem | oLbxDatas : SetItems( { oItem : GetSelected() : Cargo : cData } ),;
                                  oLbxMethods : Reset(), HEval( oItem : GetSelected() : Cargo : aAttributes,;
                                     { | cKey, cData | oLbxMethods : Add( cKey + " : " + cData ) } ) }
    Return Nil
 
Alguna idea ? Muchísimas gracias

Saludos
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Leer un archivo xml

Post by horacio »

+1
User avatar
Sistem
Posts: 224
Joined: Sun May 13, 2012 7:52 am

Re: Leer un archivo xml

Post by Sistem »

fwh\samples\xmlreader.prg
FWH2008 | xHarbour | BCC74 | SQLRDD
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Leer un archivo xml

Post by horacio »

Gracias por tu respuesta pero tampoco lee todos los nodos. Por eso probé con xmltree que los lee perfectamente.

Saludos
ACC69
Posts: 619
Joined: Tue Dec 12, 2006 7:34 pm
Contact:

Re: Leer un archivo xml

Post by ACC69 »

horacio wrote:Gracias por tu respuesta pero tampoco lee todos los nodos. Por eso probé con xmltree que los lee perfectamente.

Saludos

Hola Ing. Horacio le paso el link donde podra ver como leer un xml.

Espero que le pueda ayudar en algo el codigo y lo adapte a su sistema.


http://forums.fivetechsupport.com/viewt ... ml#p163960

Saludos

Atte: Adriano C. C.
Post Reply