cwdata = filetostr("c:\minha_pasta\meu_arq_xml.xml") =criacursordoxml(cwdata, "cur_from_xml") =atualizacursordoxml(cwdata, "cur_xml") if used("cur_from_xml") sele cur_from_xml browse endif return FUNCTION criacursordoxml LPARAMETER cwxml, cwnomecur DIMENSION m.laofc[1] DIMENSION m.lafields[1,4] DIMENSION m.lacampos[1] m.lacampos[1] = "" i1 = 0 ALINES(m.laofc,cwxml) FOR EACH m.lclinha IN m.laofc m.lninicio = AT('<',m.lclinha) m.lnfim = AT('>',m.lclinha) IF m.lninicio>0 AND m.lnfim>0 AND SUBSTR(m.lclinha,m.lninicio+1,1)!='/' IF ASCAN(m.lacampos, SUBSTR(m.lclinha,m.lninicio+1,m.lnfim-m.lninicio))=0 i1 = i1 + 1 DIMENSION m.lacampos[I1] m.lacampos[i1] = SUBSTR(m.lclinha,m.lninicio+1,m.lnfim-m.lninicio) DIMENSION m.lafields[i1,4] m.lafields[i1,1] = SUBSTR(m.lclinha,m.lninicio+1,m.lnfim-m.lninicio) m.lafields[i1,2] = "C" m.lafields[i1,3] = 20 m.lafields[i1,4] = 0 ENDIF ENDIF ENDFOR SELE 0 CREATE CURSOR (cwnomecur) FROM ARRAY m.lafields RETURN FUNCTION atualizacursordoxml LPARAMETER cwxml, cwnomecur DIMENSION m.laofc[1] DIMENSION m.lacampos[1] SELE (cwnomecur) ALINES(m.laofc,cwxml) i1=0 m.clinicio1 = 0 FOR EACH m.lclinha IN m.laofc IF "</STMTTRN>"$m.lclinha && <--- ver qual a sua tag que 'fecha' um registro INSERT INTO (cwnomecur) FROM MEMVAR ELSE m.lninicio = AT('<',m.lclinha) && Acha o Campo m.lnfim = AT('>',m.lclinha) IF m.lninicio>0 AND m.lnfim>0 AND SUBSTR(m.lclinha,m.lninicio+1,1)!='/' wcampo = "m."+SUBSTR(m.lclinha,m.lninicio+1,m.lnfim-m.lninicio-1) &wcampo = STUFF(m.lclinha,1,AT('>',m.lclinha),"") &wcampo = STUFF(&wcampo,AT('</',&wcampo),LEN(&wcampo),"") ENDIF ENDIF ENDFOR RETURN