Leitura de arquivo XML no Delphi utilizando XMLDocument

Delphi

XML

19/02/2018

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

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

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
GOSTEI 1

Mais Respostas

Danilo Pereira

Danilo Pereira

19/02/2018

Deu certo, muito obrigado.
GOSTEI 0
POSTAR