Leitura de arquivo XML no Delphi utilizando XMLDocument
Queria saber como q faço para ler uma XML que possui uma lista de informações, da forma que estou fazendo esta sempre trazendo a mesma informação.
Estou fazendo dessa forma para percorrer o arquivo:
O arquivo XML esta dessa forma:
Estou fazendo dessa forma para percorrer o arquivo:
for i := 0 to XMLDocument1.DocumentElement.ChildNodes.Count -1 do begin Memo1.Lines.Add(XMLDocument1.ChildNodes[''''tributacoes''''].ChildNodes[''''segmento''''].ChildNodes[''''produtoCliente''''].ChildNodes[''''codigoInterno''''].text); Memo1.Lines.Add(XMLDocument1.Node.ChildNodes[''''tributacoes''''].ChildNodes[''''segmento''''].ChildNodes[''''produtoCliente''''].ChildNodes[''''descricaoProdutoCliente''''].Text); memo1.Lines.Add(''''-----------------------''''); end;
O arquivo XML esta dessa forma:
<?xml version="1.0" encoding="UTF-8" ?> <tributacoes> <segmento> <produtoCliente> <codigoInterno>961</codigoInterno> <descricaoProdutoCliente>ABACATE KG</descricaoProdutoCliente> </produtoCliente> <produto> <codigoEan>3260106024455</codigoEan> <descricaoProduto>ABACATE</descricaoProduto> </produto> <detalhes> <ncm>0804.40.00</ncm> <ncm_ex /> <idSegmento>21735</idSegmento> <nomeSegmento>Abacate (in natura)</nomeSegmento> <descricaoNcm>- Abacates</descricaoNcm> <tipoProduto>NACIONAL</tipoProduto> <observacao /> <dtCadastro>11/03/2014 15:48</dtCadastro> <dtUltimaAtualizacao>06/10/2017 23:53</dtUltimaAtualizacao> </detalhes> <saida> <cfopOut>5.102</cfopOut> <icmsSaidaCheia>0.00</icmsSaidaCheia> <baseReduzida>0.00</baseReduzida> <icmsSaida>0.00</icmsSaida> <icmsSaidaSt>0</icmsSaidaSt> <icmsSituacao>Isenta </icmsSituacao> <icmsCstSaida>040</icmsCstSaida> <icmsSituacaoSN /> <icmsCsosnSaida>0</icmsCsosnSaida> <icmsLeiSaida>Item 12, Parte I, Anexo I, RICMS/MG</icmsLeiSaida> <icmsLeiLinkSaida>http://www.fazenda.mg.gov.br/empresas/legislacao_tributaria/ricms_2002_seco/anexoi2002_3.htm#parte1it12</icmsLeiLinkSaida> <leiSimplesNacional>0</leiSimplesNacional> <linkSimplesNacional>0</linkSimplesNacional> <ipi>0.00</ipi> <cest /> </saida> <entrada> <cfopIn>1.102</cfopIn> <cfopInterEstadual>2.102</cfopInterEstadual> <ufDestino>MG</ufDestino> <subItemST /> <mvaInterno>0.00</mvaInterno> <mvaExterno>0.00</mvaExterno> <mvaImportado /> <baseReduzida>0.00</baseReduzida> <icmsInternoCheia>0.00</icmsInternoCheia> <icmsCsosnEntrada>0</icmsCsosnEntrada> <icmsLeiInterno>Item 12, Parte I, Anexo I, RICMS/MG</icmsLeiInterno> <icmsLeiLinkInterno>http://www.fazenda.mg.gov.br/empresas/legislacao_tributaria/ricms_2002_seco/anexoi2002_3.htm#parte1it12</icmsLeiLinkInterno> <icmsInterno>0.00</icmsInterno> <leiSimplesNacional>0</leiSimplesNacional> <linkSimplesNacional>0</linkSimplesNacional> <icmsAtacadoAC>12.00</icmsAtacadoAC> <icmsIndustriaAC>12.00</icmsIndustriaAC> <icmsAtacadoAL>12.00</icmsAtacadoAL> <icmsIndustriaAL>12.00</icmsIndustriaAL> <icmsAtacadoAM>12.00</icmsAtacadoAM> <icmsIndustriaAM>12.00</icmsIndustriaAM> <icmsAtacadoAP>12.00</icmsAtacadoAP> <icmsIndustriaAP>12.00</icmsIndustriaAP> <icmsAtacadoBA>12.00</icmsAtacadoBA> <icmsIndustriaBA>12.00</icmsIndustriaBA> <icmsAtacadoCE>12.00</icmsAtacadoCE> <icmsIndustriaCE>12.00</icmsIndustriaCE> <icmsAtacadoDF>12.00</icmsAtacadoDF> <icmsIndustriaDF>12.00</icmsIndustriaDF> <icmsAtacadoES>12.00</icmsAtacadoES> <icmsIndustriaES>12.00</icmsIndustriaES> <icmsAtacadoGO>12.00</icmsAtacadoGO> <icmsIndustriaGO>12.00</icmsIndustriaGO> <icmsAtacadoMA>12.00</icmsAtacadoMA> <icmsIndustriaMA>12.00</icmsIndustriaMA> <icmsAtacadoMG>0.00</icmsAtacadoMG> <icmsIndustriaMG>0.00</icmsIndustriaMG> <icmsAtacadoMS>12.00</icmsAtacadoMS> <icmsIndustriaMS>12.00</icmsIndustriaMS> <icmsAtacadoMT>12.00</icmsAtacadoMT> <icmsIndustriaMT>12.00</icmsIndustriaMT> <icmsAtacadoPA>12.00</icmsAtacadoPA> <icmsIndustriaPA>12.00</icmsIndustriaPA> <icmsAtacadoPB>12.00</icmsAtacadoPB> <icmsIndustriaPB>12.00</icmsIndustriaPB> <icmsAtacadoPE>12.00</icmsAtacadoPE> <icmsIndustriaPE>12.00</icmsIndustriaPE> <icmsAtacadoPI>12.00</icmsAtacadoPI> <icmsIndustriaPI>12.00</icmsIndustriaPI> <icmsAtacadoPR>12.00</icmsAtacadoPR> <icmsIndustriaPR>12.00</icmsIndustriaPR> <icmsAtacadoRJ>12.00</icmsAtacadoRJ> <icmsIndustriaRJ>12.00</icmsIndustriaRJ> <icmsAtacadoRN>12.00</icmsAtacadoRN> <icmsIndustriaRN>12.00</icmsIndustriaRN> <icmsAtacadoRO>12.00</icmsAtacadoRO> <icmsIndustriaRO>12.00</icmsIndustriaRO> <icmsAtacadoRR>12.00</icmsAtacadoRR> <icmsIndustriaRR>12.00</icmsIndustriaRR> <icmsAtacadoRS>12.00</icmsAtacadoRS> <icmsIndustriaRS>12.00</icmsIndustriaRS> <icmsAtacadoSC>12.00</icmsAtacadoSC> <icmsIndustriaSC>12.00</icmsIndustriaSC> <icmsAtacadoSE>12.00</icmsAtacadoSE> <icmsIndustriaSE>12.00</icmsIndustriaSE> <icmsAtacadoSP>12.00</icmsAtacadoSP> <icmsIndustriaSP>12.00</icmsIndustriaSP> <icmsAtacadoTO>12.00</icmsAtacadoTO> <icmsIndustriaTO>12.00</icmsIndustriaTO> </entrada> <federal> <piscofinsSituacao>Aliquota Zero</piscofinsSituacao> <piscofinsCstEntrada>73</piscofinsCstEntrada> <piscofinsCstSaida>06</piscofinsCstSaida> <pisEntrada>0.000</pisEntrada> <cofinsEntrada>0.000</cofinsEntrada> <pisSaida>0.000</pisSaida> <cofinsSaida>0.000</cofinsSaida> <piscofinsLei>Lei 10.865/2004, Art. 28, Inciso III</piscofinsLei> <piscofinsLeiLink>http://www.planalto.gov.br/ccivil_03/_ato2004-2006/2004/lei/l10.865.htm#art28iii</piscofinsLeiLink> <piscofinsNatRec>116</piscofinsNatRec> </federal> </segmento> <segmento> </segmento> <segmento> </segmento>
Danilo Pereira
Curtidas 0
Melhor post
Natanael Ferreira
19/02/2018
Teste seu código assim:
Veja este link:
for i := 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do with XMLDocument1.DocumentElement.ChildNodes[i] do begin Memo1.Lines.Add(ChildNodes['produtoCliente'].ChildNodes['codigoInterno'].text); Memo1.Lines.Add(ChildNodes['produtoCliente'].ChildNodes['descricaoProdutoCliente'].text); Memo1.Lines.Add('- - - - - - - - - - - - - - - - - - - - - - -'); end;
Veja este link:
https://www.devmedia.com.br/importando-xml-com-o-xmldocument-delphi/24288
GOSTEI 1
Mais Respostas
Danilo Pereira
19/02/2018
Deu certo, muito obrigado.
GOSTEI 0