Leitura de arquivo XML no Delphi utilizando XMLDocument

19/02/2018

0

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:
  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

Danilo Pereira

Responder

Post mais votado

19/02/2018

Teste seu código assim:

   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

Natanael Ferreira

Natanael Ferreira
Responder

Mais Posts

19/02/2018

Danilo Pereira

Deu certo, muito obrigado.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar