Alexandre, muito bem observado!
alxsts escreveu:IF nHandle := ( FOPEN( cNFe, FO_READ ) ) == 0
Mas fiz um teste aqui e com a linha acima não estava funcionando, então alterei para:
Código: Selecionar todos
#include "fileio.ch"
FUNC MAIN()
LOCAL nHandle
Private aProds:={}
cNFe:="135100017434998_v1.10-procNFe.xml"
nHandle:=FOPEN( cNFe, FO_READ )
IF FError() == 0
oXmlDoc:= TXmlDocument():new()
oXMlDoc:read( nHandle )
oXmlNode:= oXmlDoc:findFirst( "det" )
e=1
DO WHILE oXmlNode <> NIL
oXmlDetPro := TXmlIteratorScan():new( oXmlNode )
vCod:= STRTRAN(oXmlDetPro:find( 'cProd' ):cData," ","")
vDesc:= oXmlDetPro:find( 'xProd' ):cData
AADD(aProds,{vCod,vDesc,"","","",0,0,0,0,0,0,0,0,""})
aProds[e,4]:= oXmlDetPro:find( 'CFOP' ):cData
aProds[e,5]:= oXmlDetPro:find( 'uCom' ):cData
aProds[e,6]:= VAL(oXmlDetPro:find( 'qCom' ):cData)
aProds[e,7]:= VAL(oXmlDetPro:find( 'vUnCom' ):cData)
aProds[e,8]:= VAL(oXmlDetPro:find( 'vProd' ):cData)
if valtype(oXmlDetPro:find( 'infAdProd' ))!="U"
aProds[e,14]:= oXmlDetPro:find( 'infAdProd' ):cData
endif
oXmlNode := oXmlDoc:findNext()
e+=1
ENDDO
FOR i=1 TO LEN(aProds)
? aProds[i,1], aProds[i,2], aProds[i,4], aProds[i,5], aProds[i,8]
NEXT
ELSE
Alert( "Arquivo não encontrato." )
ENDIF
RETU NIL
Abraços,