Ler XML de notas de entradas
Moderador: Moderadores
Ler XML de notas de entradas
Prezados bom dia!
Pesquisei aqui no projeto sobre alguma rotina para ler o XML que recebo do fornecedor através do e-mail, ou seja nada com o WS da Fazenda, apenas apontar para o diretório obter os xml´s ler e gravar as informações na tabela, mais não encontrei, obtive o projeto e observei as funções através do seu help mais ao que me parece não existe esta função, posso estar enganado até porque não fui mais a fundo mais caso não existir e alguem tiver existe interesse em comercializar?
Pesquisei aqui no projeto sobre alguma rotina para ler o XML que recebo do fornecedor através do e-mail, ou seja nada com o WS da Fazenda, apenas apontar para o diretório obter os xml´s ler e gravar as informações na tabela, mais não encontrei, obtive o projeto e observei as funções através do seu help mais ao que me parece não existe esta função, posso estar enganado até porque não fui mais a fundo mais caso não existir e alguem tiver existe interesse em comercializar?
Ler XML de notas de entradas
https://pctoledo.org/forum/viewto ... f=4&t=9528
Coloque a muito tempo atras uso até hoje em meu sistema!
Frazato
Coloque a muito tempo atras uso até hoje em meu sistema!
Frazato
Ler XML de notas de entradas
Olá prezado boa tarde.
Estava observando os exemplos com funções da Api do proprio Harbour para leitura de XML, obrigado pelo retorno vou verificar sua função.
Estava observando os exemplos com funções da Api do proprio Harbour para leitura de XML, obrigado pelo retorno vou verificar sua função.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Ler XML de notas de entradas
Eu tenho isso pronto.existir e alguem tiver existe interesse em comercializar?
Eu uso a HWGUI com a classe tXMLDocument. Código limpo, todos podem entender. Funciona no Windows/Linux/OS X...
Código: Selecionar todos
cArq := HWG_SelectFile( "Arquivos XML ( *.xml )", "*.xml", cDirDanfe )
cStr := hb_MemoRead( cArq )
DirChange( cPasta )
IF Empty( cStr )
hwg_Msginfo("Não achou o arquivo XML")
RETURN
ENDIF
oXML := TXMLDocument():New( cStr, HBXML_STYLE_NOESCAPE )
IF oXML:nError != HBXML_ERROR_NONE
hwg_Msgstop( "xml com problema " + Str( oXML:nError ) )
RETURN
ENDIF
oNFe := oXML:findfirst( "infNFe" )
IF oNFe == NIL
hwg_Msgstop( "TAG infNFe não localizada." )
RETURN
ENDIF
oIde := oXML:findfirst( "ide" )
IF oIde == NIL
hwg_Msgstop( "TAG ide não localizada." )
RETURN
ENDIF
oIterator := TXmlIterator():New( oIde )
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
//hwg_Msginfo("Fim da Leitura da oIDE ")
Exit
ELSE
//hwg_Msginfo("Tag Atual: " + oCurrent:cName) //? "current tag : " + oCurrent:cName
IF oCurrent:cName == "cUF"
cUF := oCurrent:cData
ELSEIF oCurrent:cName == "nNF"
cNF := oCurrent:cData
ELSEIF oCurrent:cName == "serie"
cSerie := oCurrent:cData
ELSEIF oCurrent:cName $ "dEmi dhEmi"
dEmi := hb_stod( strtran(oCurrent:cData,"-","") )
//ELSEIF oCurrent:cName == "dSaiEnt"
// dSaiEnt := hb_stod( strtran(oCurrent:cData,"-","") )
ENDIF
ENDIF
ENDDO
If Empty(cNF)
hwg_Msgstop("DANFE com problema."+hb_eol()+"Número da NFe, não informado.")
Return
EndIf
If Empty(dEmi)
hwg_Msgstop("DANFE com problema."+hb_eol()+"DATA da emissão, não informada.")
Return
EndIf
oEmit := oXML:findfirst( "emit" )
IF oEmit == NIL
hwg_Msgstop( "TAG emit não localizada." )
RETURN
ENDIF
oIterator := TXmlIterator():New( oEmit )
cCNPJ := ""
cFone := ""
dSaiEnt := date()
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
//hwg_Msginfo("Fim da Leitura da oEmit ")
EXIT
ELSE
//hwg_Msginfo("Tag Atual: " + oCurrent:cName) //? "current tag : " + oCurrent:cName
IF oCurrent:cName == "CNPJ"
cCNPJ := oCurrent:cData
ELSEIF oCurrent:cName == "xNome"
cNome := oCurrent:cData
ELSEIF oCurrent:cName == "xLgr"
xLgr := oCurrent:cData
ELSEIF oCurrent:cName == "nro"
cNRO := oCurrent:cData
ELSEIF oCurrent:cName == "xBairro"
xBairro := oCurrent:cData
ELSEIF oCurrent:cName == "xMun"
xMun := oCurrent:cData
ELSEIF oCurrent:cName == "UF"
cUF := oCurrent:cData
ELSEIF oCurrent:cName == "CEP"
cCEP := oCurrent:cData
ELSEIF oCurrent:cName == "fone"
cFone := oCurrent:cData
ELSEIF oCurrent:cName == "IE"
cIE := oCurrent:cData
ENDIF
ENDIF
ENDDO
fo->(OrdSetFocus(3)) //CNPJ
If fo->(DbSeek(cCNPJ))
cCodFor := fo->cod_fornec
er->(ordSetFocus(1))
IF er->( dbSeek(strzero(val(cNF),9)+cCodFor+dtos(dRecebido)) )
hwg_MsgStop("NFe já cadastrada !")
RETURN .F.
ENDIF
ELSE
cCodFor := ""
ENDIF
er->(ordSetFocus(6)) //dtos(es_datarec)
If empty(cCNPJ)
cCNPJ := "SEM CNPJ"
EndIf
//Novo fornecedor
If Empty(cCodFor)
fo->(OrdSetFocus(1))
fo->(DbGoBottom())
nPos := hb_At( SubStr(fo->cod_fornec,1,1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ" )
cLetra := SubStr("ABCDEFGHIJKLMNOPQRSTUVWXYZ",nPos+1,1)
IF SubStr(fo->cod_fornec,2,3) == "999"
cCodFor := cLetra + "001"
Else
cCodFor := cLetra + strzero(val(substr(fo->cod_fornec,2,3))+1,3)
Endif
incluir('fo')
fo->cod_fornec := cCodFor
fo->cgc := cCNPJ
fo->fornecedor := cNome
fo->endereco := alltrim(xLgr) + ", " + cNRO
fo->bairro := xBairro
fo->cidade := xMun
fo->uf := cUF
fo->cep := cCEP
fo->telefone := cFone
fo->insc_estad := cIE
EndIF
Incluir('er')
er->cod_fornec := cCodFor
er->fornecedor := cNome
er->cnpj := cCNPJ
er->cfop := ""
er->es_numero := strzero(val(cNF),9)
er->es_modelo := 55
er->es_serie := cSerie
er->es_subseri := ""
er->es_dataemi := dEmi
er->es_datarec := dRecebido //dSaiEnt
er->es_situaca := "N"
er->es_codfisc := "1"
er->loja := "001"
er->es_emitent := "T"
er->DifNF := 0
er->es_emitent := 'T'
oDet := oXML:findfirst( "det" )
IF oDet == NIL
hwg_Msgstop( "TAG det não localizada." )
RETURN
ENDIF
nItem := 0
cd->(ordSetFocus(1))
cd->(OrdScope(0,NIL))
cd->(OrdScope(1,NIL))
Do While .T.
oIterator := TXmlIterator():New( oDet )
nIPI := 0
cEAN := ""
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
EXIT
ELSE
IF oCurrent:cName == "cProd"
cProd := oCurrent:cData
ELSEIF oCurrent:cName == "xProd"
xProd := AllTrim(charone(" ",oCurrent:cData))
ELSEIF oCurrent:cName == "NCM"
cNCM := oCurrent:cData
ELSEIF oCurrent:cName == "CFOP"
cCFOP := oCurrent:cData
ELSEIF oCurrent:cName == "uCom"
uCom := oCurrent:cData
ELSEIF oCurrent:cName == "qCom"
qCom := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vUnTrib"
nUnTrib := val(oCurrent:cData)
ELSEIF oCurrent:cName == "pIPI"
nIPI := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vDesc"
nDesconto := val(oCurrent:cData)
ELSEIF oCurrent:cName == "cEAN"
IF hb_IsChar(oCurrent:cData)
cEAN := AllTrim(oCurrent:cData)
ENDIF
ENDIF
ENDIF
ENDDO
//Verifica se a mercadoria já foi comprada deste fornecedor
cCodMerc := ""
nMargem := nImpFed :=0
IF cd->(DbSeek(cCNPJ+cProd))
IF !empty(cd->codigosis)
cCodMerc := cd->codigosis
If eq->(DbSeek(cCodMerc))
nMargem := eq->margem
nImpFed := eq->imposto
xProd := eq->mercadoria
EndIf
ENDIF
If Empty(cd->descricao)
TravaRegistro('cd')
cd->descricao := xProd
EndIf
ELSE
incluir('cd')
cd->cnpj := cCNPJ
cd->codigonfe := cProd
cd->descricao := xProd
ENDIF
//precisa inverter os CFOP´s
IF cCFOP == "5405"
cCFOP := "1403"
ELSEIF cCFOP == "6405"
cCFOP := "2403"
ELSEIF cCFOP == "5403"
cCFOP := "1403"
ELSEIF cCFOP == "6403"
cCFOP := "2403"
ELSEIF cCFOP == "5102"
cCFOP := "1102"
ELSEIF cCFOP == "6102"
cCFOP := "2102"
ELSEIF cCFOP == "5905"
cCFOP := "1905"
ELSEIF cCFOP == "6905"
cCFOP := "2905"
ELSEIF cCFOP == "5101"
cCFOP := "1102"
ELSEIF cCFOP == "6101"
cCFOP := "2102"
ENDIF
nItem ++
incluir('et')
et->nf_entrada := strzero(val(cNF),9)
et->cod_fornec := cCodFor
et->data := dRecebido //dSaiEnt
et->cfop := cCFOP
et->cprod := cProd
et->cod_mercad := cCodMerc
et->mercadoria := xProd
et->quantidade := qCom
et->item := nItem
et->valor_unit := nUnTrib
et->ncm := cNCM
et->descfreace := nDesconto
et->icms_credi := 0
et->ipi := nIPI
et->frete := 0
et->lucro := nMargem
et->gastos := 0
et->i_f := nImpFed
et->icms_debit := 0
et->comissao := 0
et->local := 0
et->etiquetas := qCom
et->ean := cEAN
If !nc->(DbSeek(cNCM))
incluir('nc')
nc->cod_ncm := cNCM
EndIf
oDet := oXML:findnext( "det" )
If oDet == NIL
exit
EndIf
EndDo
NetFlush('nc')
NetFlush('et')
NetFlush('cd')
cd->(ordSetFocus(1))
cd->(OrdScope(0,cCNPJ))
cd->(OrdScope(1,cCNPJ))
oTotal := oXML:findfirst( "total" )
IF oTotal == NIL
hwg_Msgstop( "TAG total não localizada." )
RETURN
ENDIF
//Store 0.00 to nNF, nBC, nICMS, nST, nProd, nFrete, nSeg, nDesc, nIsento, nIPI, nOutro
oIterator := TXmlIterator():New( oTotal )
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
EXIT
ELSE
IF oCurrent:cName == "vBC"
nBC := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vICMS"
nICMS := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vST"
nST := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vProd"
nProd := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vFrete"
nFrete := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vSeg"
nSeg := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vDesc"
nDesc := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vII"
nIsento := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vIPI"
nIPI := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vOutro"
nOutDespAce := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vNF"
nNF := val(oCurrent:cData)
ENDIF
ENDIF
ENDDO
//hwg_Msginfo(str(nOutDespAce))
Travaregistro('er')
er->es_valorto := nNF
er->es_baseicm := nBC
er->es_valicms := nICMS
er->es_isenta := nISento
er->es_outras := nST //nOutro
er->desconto := nDesc
er->es_totprod := nProd
er->es_frete := nFrete
er->es_ipi := nIPI
er->es_aliquot := 0 //nST
er->outdespace := nOutDespAce
NetFlush('er')
//Contas a pagar
/*
oFat := oXML:findfirst( "fat" )
IF oFat == NIL
hwg_Msgstop( "TAG fat não localizada." )
Else
oIterator := TXmlIterator():New( oFat )
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
EXIT
Else
IF oCurrent:cName == "nFat"
cFat := val(oCurrent:cData)
EndIf
EndIf
ENDDO
ENDIF
*/
If lDuplicatas
oDup := oXML:findfirst( "dup" )
IF oDup == NIL
hwg_Msgstop( "TAG dup não localizada." + hb_eol() + "Não houve lançamentos no contas a pagar." )
Else
Do While .t.
oIterator := TXmlIterator():New( oDup )
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
EXIT
ELSE
IF oCurrent:cName == "nDup"
cDup := oCurrent:cData
ELSEIF oCurrent:cName == "dVenc"
dVenc := hb_stod( strtran(oCurrent:cData,"-","") )
ELSEIF oCurrent:cName == "vDup"
nDup := val(oCurrent:cData)
ENDIF
ENDIF
EndDo
incluir('pa')
pa->nf_compra := strzero(val(cNF),9)
pa->cod_fornec := cCodFor
pa->fornecedor := cNome
pa->duplicata := cDup
pa->data_vcto := dVenc
pa->valor := nDup
pa->data_emis := dEmi
pa->loja := "001"
oDup := oXML:findnext( "dup" )
If oDup == NIL
exit
EndIf
EndDo
NetFlush('pa')
EndIf
EndIf
oXML := NIL
et->(ordSetFocus(1))
et->(OrdScope(0,er->es_numero+er->cod_fornec+dtos(er->es_datarec) ))
et->(OrdScope(1,er->es_numero+er->cod_fornec+dtos(er->es_datarec) ))
et->(DbGoTop())
pa->(ordSetFocus(5))
pa->(OrdScope(0,er->cod_fornec) )
pa->(OrdScope(1,er->cod_fornec) )
pa->(DbGoBottom())
oBrA:Refresh()
oBrB:Refresh()
oBrC:Refresh()
IF hwg_MsgYesNo("DANFE Importado. Deseja Apagar o XML ?")
FErase( cArq )
ENDIF
RETURN .t.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Ler XML de notas de entradas
Muito bom, Itamar!
Vou fazer testes com este exemplo. Atualmente uso o AcbrNfeMonitor pra fazer esse trabalho pra mim... mas com essa classe posso mim livrar dessa dependencia.
Janio
Vou fazer testes com este exemplo. Atualmente uso o AcbrNfeMonitor pra fazer esse trabalho pra mim... mas com essa classe posso mim livrar dessa dependencia.
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Ler XML de notas de entradas
Em anexo tem essa rotina que fiz, para ler xml , que está em FIVEWIN....
- Anexos
-
ler_xml_nfe.prg- (60.95 KiB) Baixado 883 vezes
clipper 5.3, fivewin, minigui,harbour,xharbour..
Ler XML de notas de entradas
Itamar,
Em seu exemplo, como fazer para pegar o valor da BASE CALCULO PIS e COFINS que ficam em subtags de cada produto?
Janio
Em seu exemplo, como fazer para pegar o valor da BASE CALCULO PIS e COFINS que ficam em subtags de cada produto?
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Ler XML de notas de entradas
Ué ? da mesma forma que pega os outros!
Eu não fiz porque na NFe daqui dos clientes eles não pedem, mande uma nfe com isso p/ meu email p/ que eu possa fazer os ajustes. Ok?
Saudações,
Itamar M. Lins Jr.
Eu não fiz porque na NFe daqui dos clientes eles não pedem, mande uma nfe com isso p/ meu email p/ que eu possa fazer os ajustes. Ok?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Ler XML de notas de entradas
Seu email eh...
Janio
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Ler XML de notas de entradas
Ola!
itamarlins @ gmail . com
Saudações,
Itamar M. Lins Jr.
itamarlins @ gmail . com
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Ler XML de notas de entradas
Ola!
Fácil, basta adicionar os NODES (<pPis></pPis>,<pCofins></pCofins>)
Saudações,
Itamar M. Lins Jr.
Fácil, basta adicionar os NODES (<pPis></pPis>,<pCofins></pCofins>)
Código: Selecionar todos
...
oIterator := TXmlIterator():New( oDet )
...
ELSEIF oCurrent:cName == "pIPI"
nIPI := val(oCurrent:cData)
ELSEIF oCurrent:cName == "pPIS" //Percentual se quiser pode pegar o valor que vem também.
nPIS := val(oCurrent:cData)
ELSEIF oCurrent:cName == "pCOFINS" //Percentual se quiser pode pegar o valor que vem também.
nCofins := val(oCurrent:cData)
...
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Ler XML de notas de entradas
ok,
Testarei...
Janio
Testarei...
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Ler XML de notas de entradas
Itamar,
Acho q nao funcionou direito.
Perceba na imagem abaixo que o PRODUTO 1 eu tenho a chave <CST> em ICMS, PIS e COFINS. Preciso pegar o CST de ICMS, porém, a função mim retornou 08 (cst do PIS e COFINS) e não 00, que seria o correto!
Acho q nao funcionou direito.
Perceba na imagem abaixo que o PRODUTO 1 eu tenho a chave <CST> em ICMS, PIS e COFINS. Preciso pegar o CST de ICMS, porém, a função mim retornou 08 (cst do PIS e COFINS) e não 00, que seria o correto!
Código: Selecionar todos
Do While .T.
oIterator := TXmlIterator():New( oDet )
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
Exit
ELSE
IF oCurrent:cName == "cProd"
vPRDFRN := oCurrent:cData
ELSEIF oCurrent:cName == "cEAN"
IF hb_IsChar(oCurrent:cData)
vCODBAR := AllTrim(oCurrent:cData)
ENDIF
ELSEIF oCurrent:cName == "CST"
dCODCST := oCurrent:cData
Endif
ENDIF
ENDDO
- Anexos
-
- 23150106241458000119550020002947291074729077.xml
- (24.3 KiB) Baixado 361 vezes
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Ler XML de notas de entradas
É o que rapaz...?
Já fiz aqui e tem duas formas de pegar. Por item ou pegar lá no total.
Por item!
No total!
Tem que estudar a classe TXMLDocument()!!! Eu passe alguns dias p/ entender um pouquinho seu funcionamento.
O XML é um arquivo DBF, só que todo em escada. TREE.
Saudações,
Itamar M. Lins Jr.
Já fiz aqui e tem duas formas de pegar. Por item ou pegar lá no total.
Por item!
Código: Selecionar todos
...
oDet := oXML:findfirst( "det" )
IF oDet == NIL
hwg_Msgstop( "TAG det não localizada." )
RETURN
ENDIF
...
Do While .T.
oIterator := TXmlIterator():New( oDet )
nIPI := nPIS := nCOFINS := 0
cEAN := ""
DO WHILE .T.
...
oCurrent := oIterator:Next()
ELSEIF oCurrent:cName == "qCom"
qCom := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vUnTrib"
nUnTrib := val(oCurrent:cData)
ELSEIF oCurrent:cName == "pIPI"
nIPI := val(oCurrent:cData)
ELSEIF oCurrent:cName == "pCOFINS"
nCOFINS := val(oCurrent:cData)
ELSEIF oCurrent:cName == "pPIS"
nPIS := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vDesc"
nDesconto := val(oCurrent:cData)
ELSEIF oCurrent:cName == "cEAN"
IF hb_IsChar(oCurrent:cData)
cEAN := AllTrim(oCurrent:cData)
ENDIF
ENDIF
Código: Selecionar todos
...
oTotal := oXML:findfirst( "total" )
IF oTotal == NIL
hwg_Msgstop( "TAG total não localizada." )
RETURN
ENDIF
//Store 0.00 to nNF, nBC, nICMS, nST, nProd, nFrete, nSeg, nDesc, nIsento, nIPI, nOutro
oIterator := TXmlIterator():New( oTotal )
DO WHILE .T.
...
nDesc := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vII"
nIsento := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vIPI"
nIPI := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vPIS"
nPIS := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vCOFINS"
nCOFINS := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vOutro"
nOutDespAce := val(oCurrent:cData)
ELSEIF oCurrent:cName == "vNF"
nNF := val(oCurrent:cData)
ENDIF
O XML é um arquivo DBF, só que todo em escada. TREE.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Ler XML de notas de entradas
Itamar,
Vc deu exemplo de tag's unicas! Mim refiro a tag's q se repetem dentro de um mesmo produto como <CST> que tem em ICMS, COFINS e PIS.
Mas td bem... vou ver o q faço por aqui!
Janio
Vc deu exemplo de tag's unicas! Mim refiro a tag's q se repetem dentro de um mesmo produto como <CST> que tem em ICMS, COFINS e PIS.
Mas td bem... vou ver o q faço por aqui!
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql


