Te mando toda la rutina que yo utilizo para emitir facturas electrónicas. Hay una rutina para leer archivos xml. Fijate si te sirve
Aadd( aRespuesta, aText[ nIdx ] )
End
ElseIf( c_ServicioLlamado = 'TA' )
If( aText[ nIdx, 1 ] == 'generationTime' .or. ;
aText[ nIdx, 1 ] == 'expirationTime' .or. ;
aText[ nIdx, 1 ] == 'token' .or. ;
aText[ nIdx, 1 ] == 'sign' )
Aadd( aRespuesta, aText[ nIdx ] )
End
ElseIf( c_ServicioLlamado = 'FECAESolicitar' )
If( aText[ nIdx, 1 ] == 'Resultado' .or. ;
aText[ nIdx, 1 ] == 'Reproceso' .or. ;
aText[ nIdx, 1 ] == 'CAE' .or. ;
aText[ nIdx, 1 ] == 'CAEFchVto' .or. ;
aText[ nIdx, 1 ] == 'Code' .or. ;
aText[ nIdx, 1 ] == 'Msg' )
Aadd( aRespuesta, aText[ nIdx ] )
End
End
Next
Return( aRespuesta )
//----------------------------------------------------------------------------//
*: TimeFMT Devuelve la fecha y hora recibida en forma de texto
//----------------------------------------------------------------------------//
Static Function TimeFMT( dt, n_Horas )
Local c := ''
Local cFechaHora := ''
dt := dt + ( n_Horas / 24 )
c := hb_TToS( dt )
cFechaHora := SubStr( c, 01, 4 ) + '-' + SubStr( c, 05, 2 ) + '-' + SubStr( c, 07, 2 ) + ;
'T' + ;
SubStr( c, 09, 2 ) + ':' + SubStr( c, 11, 2 ) + ':' + SubStr( c, 13, 2 ) // + '-' + '03:00'
Return( cFechaHora )
//----------------------------------------------------------------------------//
*: MuestroRespuesta :
*: Muestra informaci¢n recibida del WS correspondiente :
*: Estado: OK (funcionando) :
//----------------------------------------------------------------------------//
Function MuestroRespuesta( a_Respuesta )
Local nIdx := 0
Cls
If( !Empty( a_Respuesta ) )
? 'COMIENZA LA VISUALIZACION DE LA RESPUESTA'
?
For nIdx := 1 to Len( a_Respuesta )
? a_Respuesta[ nIdx, 01 ], a_Respuesta[ nIdx, 02 ]
Next
?
? 'FINALIZO LA VISUALIZACION DE LA RESPUESTA'
? 'PRESIONE CUALQUIER TECLA PARA CONTINUAR'
Else
? '****************************************************'
? ' HUBO ALGUN TIPO DE ERROR, NO HAY NADA PARA MOSTRAR '
? '****************************************************'
End
//Inkey( 0, 128 ) // 128 para que si muevo el mouse no me saque del inkey
Return( .t. )