Leer un archivo xml
Posted: Mon Aug 27, 2018 4:08 pm
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
y esto es lo que obtengo en el array
Este es el código de xmltree que modifiqué para que obtener un array
Alguna idea ? Muchísimas gracias
Saludos
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>
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
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
Saludos