Algumas pessoas têm me procurado com muitas dúvidas sobre gerar um arquivo XML; mas, ultimamente, principalmente, como fazer para ler os dados de um XML. Já mostrei como fazer isso usando o utilitário que acompanha o Delphi “XML Mapper”; o qual uso muito (veja o post) quando preciso integrar um arquivo XML com meu sistema de forma definitiva.

Outra forma de executar a leitura parcial ou total de um arquivo XML é usando o componente TXMLDocument; com ele vc. pode buscar facilmente a informação que vc precisa dentro do arquivo; no código exemplo, que disponibilizo abaixo: vamos ler os itens do arquivo exemplo gerado no post “Dados XML como começar” (poderia ser usado para ler os itens da sua NF-e com pequenos ajustes):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
procedure TForm1.Button32Click(Sender: TObject);
var vXMLDoc: TXMLDocument;
    NodePai,NodeSec,NodeTmp: IXMLNode;
    nome, codigo: WideString;
begin
  // Cria a variável baseada no TXMLDocument
  vXMLDoc := TXMLDocument.Create(self);
 
  // Le conteúdo do arquivo XML informado 
  vXMLDoc.LoadFromFile('EnviNFe.xml');
  // Poderia ser uma URL como abaixo:
  //vXMLDoc.FileName := 'http://www.caiooliveira.com.br/?feed=rss2';
  //vXMLDoc.Active := True;
 
  // Vou colocar os dados no memo apenas como exemplo
  Memo.lines.Add( '-------------------------------------------------');
  Memo.lines.Add( 'Vamos inserir num campo memo (apenas para ver o resultado do teste');
  Memo.lines.Add( VXMLDoc.XML.Text +#13+#13 );
 
  // Aqui eu peço para encontrar a primeira ocorrencia da Tag <det>>
  NodePai := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode('det');
  // Esse nó vai ser usado no LOOP
  NodeSec := NodePai;
  // Posiciona o primeiro elemento encontrado
  NodeSec.ChildNodes.First;
  repeat
    // referencia a tag <prod> dentro de <det>
    NodeTmp  := NodeSec.ChildNodes['prod'];
    // da pra ver que é um XML resumido da NFe (so temos uma tag <prod> para cada <det> então não precisaria da linha abaixo
    // agora se tivéssemos mais de uma seria o caso de posicionar também na primeira ocorrencia.
    NodeTmp.ChildNodes.First;
    repeat
      // pega os dados que vc quiser dentro da tag <prod>
      nome := NodeTmp.ChildNodes['cProd'].text;     // posso ler assim
      codigo := NodeTmp.ChildValues['cEan'];        // ou assim
 
      // vamos inserir no Memo os dados
      Memo4.Lines.Add('-----------------------------------------------');
      Memo4.Lines.Add( nome+' ---- '+codigo );
 
      // vai para a proxima ocorrência <prod> (se houvesse)
      NodeTmp := NodeTmp.NextSibling;
    until NodeTmp = nil;
    // vai para a proxima ocorrência <det>
    NodeSec := NodeSec.NextSibling;
  until NodeSec = nil;
end;

Posts Relacionados

Tags: ,



84 Comentários

  • At 2009.03.10 15:22, admin said:

    Olá Eduardo,

    Segue um exemplo do codigo abaixo:

     
    .... 
     
    NodePai := vXMLDoc.DocumentElement.ChildNodes.FindNode('infNFe');
      Id := NodePai.GetAttributeNS('Id','');
      Memo.Lines.Add( 'Id:' +Id );
     
      Nodeide := NodePai.ChildNodes.FindNode('ide');
      Memo.Lines.Add( 'dEmi = '+Nodeide.ChildNodes['dEmi'].text);
      Memo.Lines.Add( 'dSaiEnt = '+Nodeide.ChildNodes['dSaiEnt'].text);
     
    ...
    • At 2009.03.19 16:40, Eduardo said:

      Caio,
      Ao ler o meu arquivo o exemplo retorna um erro no Id =(access voliation)
      Id = WideString OK?

      Pode ser o meu arquivo?

      Grato
      []´s Eduardo

      • At 2009.04.14 08:50, Edelson said:

        Bom dia Caio!
        Existe alguma maneira de fazer uma pesquina de um valor contido numa tag utilizando o XMLDocument?
        Por exemplo, tenho um XML com a seguinte estrutura:

        Como eu faço para retornar o ID_CLIENTE = 4 por exemplo?
        Tenho que fazer um loop e ler todos os registros, ou existe alguma maneira mais “inteligente”?

        Abraços!

        • At 2009.04.14 08:51, Edelson said:

          Acho que o blog não aceita tags né? rs
          Não apareceu nada na mensagem que eu enviei…

          • At 2009.04.14 15:11, Caio said:

            Olá Edelson,

            Dá uma olhada na matéria desse link, acho que deve lhe ajudar (http://www.marcosdellantonio.net/2007/05/29/utilizando-xpath-no-delphi/).

            Sds,

            • At 2009.04.17 12:13, Luis Fernando ferrari said:

              Ola Caio nao sei mas o que fazer tenho um aquivo XML como segue abaixo

              96293
              1
              2009-04-14 13:51:14
              -23.5489
              -46.5655
              0
              21.8536
              1
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              0
              1
              1
              0
              NA
              2067
              27
              76
              0
              1
              0
              1
              0
              1
              NA
              NA
              NA
              38966

              0
              0
              0
              0

              tenho que pegar as tags como ex: serial, type, timestap, etc mostrar e gravar no banco usando o seu exemplo da nf da um erro de violação de acesso
              veja o codigo :

              procedure TForm1.FileListBox1Click(Sender: TObject);
              var vXMLDoc: TXMLDocument;
              NodeRec,NodeTmp: IXMLNode;
              wserial, wdatahora: WideString;
              begin
              arq_xml.text := FileListBox1.FileName ;
              XMLDocument1.FileName := trim(arq_xml.text) ;
              XMLDocument1.LoadFromFile(arq_xml.Text); //Le Arquivo XML’);
              Memo.lines.Add( XMLDocument1.XML.Text +#13+#13 );
              if arq_xml.text = ” then
              else
              TreeView1.LoadFromFile(arq_xml.text);
              NodeRec := XMLDocument1.DocumentElement.childNodes.First.ChildNodes.FindNode(‘serial’) ;
              // Prepara para ler os dados da tag
              NodeRec := XMLDocument1.DocumentElement.ChildNodes.FindNode(‘serial’); /// aqui ele nao esta carregando o node
              // Lendo os campos da tag
              wserial := NodeRec.ChildNodes['SERIAL'].Text ; // aqui da o erro de violação de acesso
              end;

              Pode me ajudar ou tem um jeito mais simples pq por clientdataset nao consegui tambem

              • At 2009.04.17 12:17, Luis Fernando ferrari said:

                o arquivo xml nao foi correto vou te dar o exemplo de como esta

                96293

                • At 2009.04.17 15:01, admin said:

                  Olá Luis,

                  Conforme XML exemplo que vc me enviou via e-mail, o codigo poderia ser assim:

                  var vXMLDoc: TXMLDocument;
                      NodePai: IXMLNode;
                      serial, latitude, longitude, vel: WideString;
                   
                  begin
                    vXMLDoc := TXMLDocument.Create(self);
                    vXMLDoc.LoadFromFile('c:\tempo\positions.xml');
                   
                    NodePai := vXMLDoc.DocumentElement.ChildNodes.FindNode('POSITION');
                    NodePai.ChildNodes.First;
                    repeat
                        serial := NodePai.ChildNodes['SERIAL'].text;
                        latitude := NodePai.ChildNodes['LATITUDE'].text;
                        longitude := NodePai.ChildNodes['LONGITUDE'].text;
                        vel := NodePai.ChildNodes['VEL'].text;
                        NodePai := NodePai.NextSibling;
                   
                        Memo.Lines.Add( serial+', '+latitude+', '+longitude+', '+vel )
                    until NodePai = nil;
                   
                  end;
                  • At 2009.04.17 15:46, Luis Fernando ferrari said:

                    Vc é o cara muito obrigado deu certo

                    • At 2009.05.14 12:36, Marcio said:

                      Olá Caio , Pessoal da pagina .

                      Fiz toda uma rotina para leitura completa do NFE, para gerar a DANFE com o Quick Report , mais ainda nao faco ideia de como fazer isso .

                      para quem desejar pode acompanhar o codigo em :
                      http://malubri.blogspot.com/2009/05/lendo-o-xml-da-nfe-com-o-xmldocument.html

                      Att. MArcio

                      • At 2009.06.09 13:30, gleyson said:

                        Boa tarde Caio não sei se pode me ajudar estou utilizando o seu código e alterando para dar entrada no estoque do meu rp atraves do xml ou seja atraves do xml da nfe insiro os dados do produto e do fornecedor no meu bando de dados segue abaixo parte do código.
                        bem até aqui está funcionando bem meu problema e os impostos pois tenho as tagues antes de chegar nos dados e sempre dá acsess violatin nestas tagas
                        -
                        -
                        -

                        grato e gostaria de agradecer pelo blog pois está sendo o meu norte.

                        // Aqui eu peço para encontrar a primeira ocorrencia da Tag >
                        NodeNFEide := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode(‘ide’);
                        ide_cUF := NodeNFEide.ChildValues['cUF'];
                        ide_cNF := NodeNFEide.ChildValues['cNF'];
                        ide_natOp := NodeNFEide.ChildValues['natOp'];
                        ide_indPag := NodeNFEide.ChildValues['indPag'];
                        ide_mode := NodeNFEide.ChildValues['mod'];
                        ide_serie := NodeNFEide.ChildValues['serie'];
                        ide_nNF := NodeNFEide.ChildValues['nNF'];
                        ide_dEmi := NodeNFEide.ChildValues['dEmi'];

                        // Aqui eu peço para encontrar a primeira ocorrencia da Tag >
                        NodePai := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode(‘det’);

                        // Esse nó vai ser usado no LOOP
                        NodeSec := NodePai;
                        // Posiciona o primeiro elemento encontrado
                        NodeSec.ChildNodes.First;
                        repeat
                        // referencia a tag dentro de
                        NodeTmp := NodeSec.ChildNodes['prod'];
                        NodeTmp.ChildNodes.First;

                        repeat
                        // pega os dados que vc quiser dentro da tag
                        if NodeTmp.ChildValues['xProd'] Null then
                        begin
                        nome := NodeTmp.ChildValues['xProd'];

                        if NodeTmp.ChildValues['CFOP'] Null then
                        begin
                        NaturezaOperacao := NodeTmp.ChildValues['CFOP'];
                        end;

                        if NodeTmp.ChildValues['cProd'] Null then
                        begin
                        codigo := NodeTmp.ChildValues['cProd'];
                        end;

                        if NodeTmp.ChildValues['NCM'] Null then
                        begin
                        ClassificacaoFiscal := NodeTmp.ChildValues['NCM'];
                        end;

                        if NodeTmp.ChildValues['uCom'] Null then
                        begin
                        Unidade := NodeTmp.ChildValues['uCom'];
                        end;

                        if NodeTmp.ChildValues['qCom'] Null then
                        begin
                        Quantidade := NodeTmp.ChildValues['qCom'];
                        Quantidade := StringReplace(Quantidade, ‘.’, ‘,’, [rfReplaceAll]);
                        qtd := StrtoFloat(Quantidade);
                        Quantidade := FormatFloat(‘#######0.’,qtd);
                        end;

                        if NodeTmp.ChildValues['vUnCom'] Null then
                        begin
                        ValorUnitario := NodeTmp.ChildValues['vUnCom'];
                        ValorUnitario := StringReplace(ValorUnitario, ‘.’, ‘,’, [rfReplaceAll]);
                        vlrunt := StrtoFloat(ValorUnitario);
                        ValorUnitario := FormatFloat(‘#######0.00′,vlrunt);
                        end;

                        end;

                        // vai para a proxima ocorrência
                        NodeTmp := NodeTmp.NextSibling;
                        until NodeTmp = nil;
                        // vai para a proxima ocorrência
                        NodeSec := NodeSec.NextSibling;
                        until NodeSec = nil;

                        • At 2009.06.09 13:32, gleyson said:

                          - imposto
                          - ICMS
                          - ICMS10

                          As tagues que está dando erro são estas elas não aparecerão no codigo acima
                          Grato gleson

                          • At 2009.06.10 11:10, admin said:

                            Guenta ai que lhe respondo mais tarde…

                            • At 2009.08.24 18:45, Marcelo said:

                              Caio,

                              estou tentando fazer a leitura do retorno de lote.
                              Está me dando dois erros.
                              O primeiro é que ele diz que o documento não está Ativo.
                              resolvi colocando vXMLDoc.Active := True;

                              o Segundo me dá na hora de ativar o documento.
                              Project NF.exe raised exception class EDOMParseError with message ‘Se encontró un carácter no válido en el contenido del text.
                              Line:1
                              <’

                              É leitura do retWS mesmo.

                              Marcelo

                              • At 2009.08.24 23:03, admin said:

                                Olá Marcelo,

                                Algumas UF estão devolvendo acentos no arquivo XML de retorno o que causa o erro na hora de abrir o arquivo. Antes de abrir o arquivo de retorno, executa uma função para remover caracteres inválidos.

                                Sds,

                                • At 2009.09.21 14:40, Tiago said:

                                  Por Favor Caio,

                                  Não estou conseguindo fazer o Until de meu Repeat funcionar…

                                  O que acontece é que ele não sai do loop.

                                  Veja.

                                  type
                                  TNodes = Record

                                  Itens : IXMLNode ; //Itens da NF

                                  End;

                                  Nodes.Itens.ChildNodes.First;
                                  Repeat

                                  Nodes.Itens := Nodes.Itens.NextSibling ;

                                  Until( Nodes.Itens = nil );

                                  Muito obrigado por sua ajuda!

                                  • At 2009.09.23 14:18, admin said:

                                    Olá Thiago,

                                    O “repeat/until” funciona mais ou menos como o “While x = y do begin … end”; ou seja, no seu caso, enquanto o Nodes.Itens não atingir um valor “nulo” o loop não cessará. Verifique o código novamente, se quiser me passa o código como vc. está usando que dou uma olhada pra vc.

                                    Sds

                                    • At 2009.09.25 17:26, Danilo said:

                                      Caio,

                                      Através deste artigo consegui fazer a leitura e a escrita de arquivos XML.

                                      Mas quando tento ler várias vezes um nó não estou conseguindo.

                                      Conteúdo do XML:

                                      0012
                                      Pharmalink
                                      SAN001
                                      24092009170913
                                      00

                                      20490
                                      28763118000190
                                      000001
                                      3299
                                      623
                                      2676
                                      623
                                      72990

                                      PHARMALINK (SAN001) – VENDA
                                      DATA: 24/09/2009 HORA: 17:31:13
                                      ESTAB: 28763118000190 TERM: 0000000001
                                      AUT. 0000072990 TRANS. 0000020490
                                      DROG NOSSA CAIXA
                                      CART.: XXXXXXXXX158 VALOR: R$6,23

                                      ______________________________________
                                      Ze da Silva

                                      Código:

                                      nodeRetorno := xmlLeitura.DocumentElement.ChildNodes.FindNode(‘linhas’);
                                      nodeRetorno.ChildNodes.First;
                                      repeat
                                      ShowMessage(nodeRetorno.ChildNodes['linha'].Text);
                                      nodeRetorno := nodeRetorno.NextSibling;
                                      until ( nodeRetorno = nil );

                                      Tenho que ler todas as linhas dentro da tag

                                      • At 2009.09.25 17:29, Danilo said:

                                        ops,

                                        no XML eu tenho uma tag LINHAS e dentro dela várias tags LINHA com o conteúdo acima.

                                        • At 2009.09.29 00:23, admin said:

                                          Danilo,

                                          Envia o arquivo XML no meu e-mail e o ponto onde está o problema que dou uma olhada pra vc.

                                          sds

                                          • At 2009.09.29 11:01, Danilo said:

                                            Obrigado a atenção.

                                            Já enviei no seu email.

                                            • At 2009.10.15 09:29, Wanderson Robert said:

                                              Ola, tenho tido problmas para importacao de um XML (cupons) gerado pelo winmfd2,tentei aplicar conforme exemplo, mas nao consigo, se puder agradeco auxilo.
                                              Abaixo estrutura do XML

                                              13/10/2009 00:12:33
                                              4205
                                              3309

                                              1
                                              0000000000001
                                              ALCOOL COMUM
                                              4,038
                                              1,86
                                              7,51
                                              FF

                                              7,51
                                              0,00
                                              0,00
                                              7,51
                                              7,51
                                              0,00

                                              13/10/2009 00:14:08
                                              4207
                                              3310

                                              1
                                              0000000000001
                                              ALCOOL COMUM
                                              40,651
                                              1,86
                                              75,61
                                              FF

                                              75,61
                                              0,00
                                              0,00
                                              75,61
                                              0,00
                                              0,00

                                              4213

                                              • At 2009.10.15 09:33, Wanderson Robert said:

                                                a estutura do xml é:

                                                documentos

                                                cupom_fiscal
                                                hora_inicio
                                                coo
                                                ccf
                                                venda_de_item
                                                ordem
                                                codigo
                                                descricao
                                                quantidade
                                                valor_unitario
                                                valor_bruto
                                                aliquota
                                                venda_de_item
                                                subtotal
                                                acrescimo
                                                desconto
                                                total
                                                soma_pgto
                                                troc
                                                cupom_fiscal

                                                cancelamento_de_cupom_fiscal
                                                coo_do_cupom_cancelado
                                                cancelamento_de_cupom_fiscal

                                                documentos

                                                • At 2009.10.15 09:43, Wanderson Robert said:

                                                  nodepai:= vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode(‘documentos’);

                                                  xDocumentos := nodepai;
                                                  xDocumentos.ChildNodes.First;
                                                  xcupons := xdocumentos.ChildNodes['cupom_fiscal'];
                                                  xcupons.ChildNodes.First;
                                                  repeat
                                                  application.ProcessMessages;
                                                  Cupons.Insert;
                                                  Cuponscupom_fiscal.Value :=strtoint(xcupons.ChildNodes['coo'].Text);
                                                  cuponsemissao.AsDateTime :=StrtoDate(Copy(xcupons.ChildNodes['hora_inicio'].Text,1,10));
                                                  cuponshora.Value :=Strtotime(Copy(xcupons.ChildNodes['hora_inicio'].Text,12,8));
                                                  cuponsvalor.Value :=StrtoFloat(xcupons.ChildNodes['total'].Text);
                                                  cupons.Post;
                                                  { xitens:= xcupons.ChildNodes['venda_de_item'];
                                                  // xitens.ChildNodes.First;
                                                  repeat
                                                  application.ProcessMessages;
                                                  Cupons_itens.Insert;
                                                  Cupons_itenscupom_fiscal.Value :=strtoint(xcupons.ChildNodes['coo'].Text);
                                                  cupons_itensordem.Value :=strtoint(xitens.ChildNodes['ordem'].Text);
                                                  cupons_itenscodigo.Value :=strtoint(xitens.ChildNodes['codigo'].Text);
                                                  cupons_itensdescricao.Value :=xitens.ChildNodes['descricao'].Text;
                                                  cupons_itensquantidade.Value :=StrtoFloat(xitens.ChildNodes['quantidade'].Text);
                                                  cupons_itensvalor_unitario.Value :=StrtoFloat(xitens.ChildNodes['valor_unitario'].Text);
                                                  cupons_itensvalor_bruto.Value :=StrtoFloat(xitens.ChildNodes['valor_bruto'].Text);
                                                  cupons_itensaliquota.Value :=xitens.ChildNodes['aliquota'].Text;
                                                  cupons_itens.Post;
                                                  xitens.NextSibling;
                                                  until xitens=nil ;}
                                                  xcupons.NextSibling;
                                                  until xcupons=nil;

                                                  • At 2009.10.15 18:26, admin said:

                                                    Envia o XML no meu e-mail.

                                                    • At 2009.10.24 11:46, Tonieto said:

                                                      Caio,

                                                      não estou conseguindo escrever o codigo correto para percorrer a tag e pegar as informacoes sobre as duplicatas de um xml autorizado. Veja trecho do xml.

                                                      22552009-11-17333.0822552009-11-27333.0822552009-12-02333.08

                                                      Help me, my friend.

                                                      • At 2009.12.17 09:46, Jeová said:

                                                        Caio, Obrigado por compartilhar seu conhecimento conosco, continue assim e que o criador lhe abençoe e continue dando paciência para nos ajudar.
                                                        Grato,

                                                        • At 2009.12.18 08:54, Theo Duarte said:

                                                          Caio, uma duvida, e no caso de eu ter que ler o xml, porém de uma variável string, ao invés de um arquivo.

                                                          • At 2010.01.06 09:22, Fábio Spies said:

                                                            Caio, muito obrigado esse texto foi extremamente util e aplicável.
                                                            Porém pra mim só ficou uma dúvida:
                                                            Em uma NF-e existe a tag assim:

                                                            Conforme os exemplos acima consigo retornar tranquilamente o numero do protocolo e a chave as tags nProt e chNFe.
                                                            Mas não consigo pegar a informação que está no próprio campo: <infProt Id="…quero pegar essa string aqui…"
                                                            Sei que reflete o numero do protocolo precedido da expressão NFe, mas tenho que comparar esse conteúdo com o nProt, pois utilizando o programa emissornfe da sefaz, constatei que algumas notas geram nesse campo a chave da nota ao invés do protocolo e isso causa erro nos importadores.
                                                            Desta forma pretendo fazer uma ferramenta para identificar os xml que tem esse erro.
                                                            Desde já agradeço.

                                                            • At 2010.01.06 10:17, Fábio Spies said:

                                                              Ops, consegui agora usando o comando:

                                                              NodePai := vXMLDoc.DocumentElement.ChildNodes.FindNode(‘protNFe’);
                                                              NodeSec := NodePai.ChildNodes.FindNode(‘infProt’)
                                                              infProtid := NodeSec.GetAttributeNS(‘Id’,”);

                                                              • At 2010.01.11 10:51, admin said:

                                                                Olá Theo,

                                                                Nesse caso, basta adicionar a string à propriedade XML do TXMLDocument; como no código abaixo:

                                                                vXMLDoc.XML.Text := string;

                                                                sds,

                                                                • At 2010.02.06 10:25, André Batista said:

                                                                  Bom caio!
                                                                  Estou estudando os código a listados mas não estou conseguindo obter êxito nas técnicas aqui apresentedas, gostaria de saber como faça para pegar o Id da Nfe.

                                                                  • At 2010.04.05 17:36, Joao Henrique said:

                                                                    Olá…

                                                                    Só um comentario…
                                                                    Na de claração da variável, é melhor usar:

                                                                    ao invés de:
                                                                    var vXMLDoc: TXMLDocument;

                                                                    usar:
                                                                    var vXMLDoc: IXMLDocument;

                                                                    Pois só assim eu consigui dar um “Free” no vXMLDOC:

                                                                    finally
                                                                    vXMLDoc:=nil;

                                                                    []´s

                                                                    • At 2010.04.08 13:49, Adriano said:

                                                                      Olá Caio,

                                                                      Estou montado um sistema para entrada das XML no ERP, tudo estava tranquilo quando me deparece com a seguinte tag:

                                                                      -
                                                                      -
                                                                      5426
                                                                      2955.75
                                                                      2955.75

                                                                      -
                                                                      5426/1
                                                                      2010-04-27
                                                                      985.25

                                                                      -
                                                                      5426/2
                                                                      2010-05-04
                                                                      985.25

                                                                      -
                                                                      5426/3
                                                                      2010-05-11
                                                                      985.25


                                                                      A tag esta ok mas o meu problema o na hora do repeat nas tag vc poderia me dar uma ajuda

                                                                      Desde já agradeço

                                                                      • At 2010.04.08 15:16, Adriano said:

                                                                        Caio,

                                                                        Consegui aqui montar tava me confundindo, abaixo segue como montei

                                                                        vNoDup := vNoCobr.ChildNodes['dup'];
                                                                        vNoDup.ChildNodes.First;
                                                                        repeat

                                                                        vNDup := vNoDup.ChildNodes['nDup'].Text;

                                                                        vNoDup := vNoDup.NextSibling;
                                                                        until vNoDup = nil;

                                                                        XML TAG FATURA

                                                                        vNoCobr – tag COBR da NF-e
                                                                        vNoDup – tag DUP dentro da TAG COBR
                                                                        vNDup – é o elemento NDUP

                                                                        • At 2010.04.16 16:40, Thiago Balbino said:

                                                                          2
                                                                          0603
                                                                          310000008609925
                                                                          104
                                                                          Lote processado
                                                                          31

                                                                          2
                                                                          0600
                                                                          31100405323734000125550010000005100000005104
                                                                          2010-04-16T10:18:12
                                                                          FvLExuNtVzd0THV0yuVHSxEMCRI=
                                                                          405
                                                                          Rejeicao: Codigo do pais do emitente: digito invalido

                                                                          pessoal como faço pra ler os valores no cabeçalho do XML

                                                                          –> 2
                                                                          –> 0603
                                                                          –> 310000008609925
                                                                          –> 104
                                                                          –> Lote processado
                                                                          –> 31

                                                                          esses campos att.

                                                                          • At 2010.04.24 23:34, Odoni said:

                                                                            Oi Caio, preciso da sua ajuda.

                                                                            o meu programa esta lendo mais itens do que existem no xml. ai da pau. só tem um produto no xml.
                                                                            como eu faço para jogar os dados lidos do xml para o rave ou QR?
                                                                            obrigado.

                                                                            • At 2010.05.14 14:47, maria silvia said:

                                                                              Boa Tarde,

                                                                              Estou Lendo um XML da NFe utilizando o seu codigo, no delphi 2007, porem ele lê alguns arquivos e outros ele dá ACCESS VIOLATION qdo ele vai pegar o numero da nota no XML.

                                                                              estou fazendo assim:

                                                                              vXMLDoc := TXMLDocument.Create(self);
                                                                              // Le conteúdo do arquivo XML informado
                                                                              vXMLDoc.LoadFromFile(ClientDataSet1.FieldByName(‘ARQUIVO’).AsString);

                                                                              NodePai := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode(‘ide’);
                                                                              //strNeNF – variavel do tipo wideString
                                                                              strNeNF := NodePai.ChildNodes['nNF'].text;
                                                                              // ele da erro na linha acima… porém so em alguns xmls

                                                                              vc pode me ajudar?

                                                                              • At 2010.06.03 23:37, Ricardo Gondim said:

                                                                                Estou usando esta rotina para ler varios arquivos xml e atualiza a chave da Nfe do meu arquivo em mysql. Só que ao executar pela segunda vez ela me retorna o seguinte erro: O sistema não pode localizar o Objeto especificado..

                                                                                procedure TForm1.Button1Click(Sender: TObject);
                                                                                var vXMLDoc: TXMLDocument;
                                                                                NodePrim, NodePai, NodeCabecalhoXML, NodeRec, NodeRec2, NodeSec, NodeTmp: IXMLNode;
                                                                                Nome: WideString;
                                                                                index:integer;
                                                                                Arquivo :String;
                                                                                begin
                                                                                Table1.Open;
                                                                                Table2.Open;
                                                                                vXMLDoc := TXMLDocument.Create(self);
                                                                                OpenDialog1.FileName := ”;
                                                                                OpenDialog1.Title := ‘Selecione a NFE’;
                                                                                OpenDialog1.DefaultExt := ‘*-nfe.XML’;
                                                                                OpenDialog1.Filter := ‘Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*’;
                                                                                OpenDialog1.InitialDir := ‘c:\automa\nfe\saidas\’;
                                                                                if OpenDialog1.Execute then
                                                                                begin
                                                                                for index:=0 to OpenDialog1.Files.Count-1 do
                                                                                begin
                                                                                ListBox1.Items.Add(ExtractFileName( OpenDialog1.Files[index]));
                                                                                Arquivo := (listbox1.items.Strings[index]);
                                                                                vXMLDoc.LoadFromFile(arquivo);
                                                                                vXMLDoc.Active := True;
                                                                                Memo.Lines.Clear;
                                                                                Memo4.Lines.Clear;

                                                                                try
                                                                                // vXMLDoc.LoadFromFile(‘C:\xml\Delphi_caio\EnviNFe.xml’);

                                                                                Memo.lines.Add( ‘————————————————-’);
                                                                                Memo.lines.Add( VXMLDoc.XML.Text +#13+#13 );

                                                                                NodePrim := vXMLDoc.DocumentElement.ChildNodes.FindNode(‘NFe’);
                                                                                NodePai := NodePrim.ChildNodes.FindNode(‘infNFe’);
                                                                                NodeCabecalhoXML := NodePai.ChildNodes['ide'];
                                                                                {Dados do nó dentro do nó pai IDE}
                                                                                Memo4.Lines.Add( ‘Código da UF ‘+ NodeCabecalhoXML.ChildNodes['cUF'].Text);
                                                                                Memo4.Lines.Add( ‘Código Numérico ‘+ NodeCabecalhoXML.ChildNodes['cNF'].Text);
                                                                                Memo4.Lines.Add( ‘Natureza Operação ‘+ NodeCabecalhoXML.ChildNodes['natOp'].Text);
                                                                                Memo4.Lines.Add( ‘Ind. Forma Pgto. ‘+ NodeCabecalhoXML.ChildNodes['indPag'].Text);
                                                                                Memo4.Lines.Add( ‘Modelo Doc. Fiscal ‘+ NodeCabecalhoXML.ChildNodes['mod'].Text);
                                                                                Memo4.Lines.Add( ‘Série da Nfe ‘+ NodeCabecalhoXML.ChildNodes['serie'].Text);
                                                                                Memo4.Lines.Add( ‘Nº Doc. Fiscal ‘+ NodeCabecalhoXML.ChildNodes['nNF'].Text);
                                                                                // Lê os dados de “protNFe”
                                                                                NodeRec := vXMLDoc.DocumentElement.ChildNodes.FindNode(‘protNFe’);
                                                                                NodeRec2:= NodeRec.ChildNodes.FindNode(‘infProt’);
                                                                                Memo4.Lines.Add( ‘Chave Nfe ‘+ NodeRec2.ChildNodes['chNFe'].Text);

                                                                                MskNota.TExt := NodeCabecalhoXML.ChildNodes['nNF'].Text;
                                                                                MskNota.TExt := Zeros(MskNota.TExt);
                                                                                Table1.IndexName := ‘SAIDAS3′;
                                                                                If Table1.FindKey([MskNota.TExt])= True Then
                                                                                begin
                                                                                Table1.Edit;
                                                                                Table1ChVNfe.Text := NodeRec2.ChildNodes['chNFe'].Text;
                                                                                Table1.post;
                                                                                end;
                                                                                Table2.IndexName := ‘NOTAS2′;
                                                                                If Table2.FindKey([MskNota.TExt])= True Then
                                                                                begin
                                                                                Table2.Edit;
                                                                                Table2ChVNf.Text := NodeRec2.ChildNodes['chNFe'].Text;
                                                                                Table2.post;
                                                                                end;

                                                                                { NodePrim := vXMLDoc.DocumentElement.ChildNodes.FindNode(‘NFe’); // acrescentar essa linha
                                                                                NodePai := NodePrim.ChildNodes.FindNode(‘infNFe’); // modifique aqui.
                                                                                NodeSec := NodePai.ChildNodes.FindNode(‘det’);
                                                                                NodeSec.ChildNodes.First;
                                                                                repeat
                                                                                NodeTmp := NodeSec.ChildNodes['prod'];
                                                                                nome := NodeTmp.ChildNodes['cProd'].text; // posso ler assim
                                                                                if nome ” then
                                                                                begin
                                                                                Memo4.Lines.Add( NodeTmp.ChildNodes['cProd'].text +’ ‘+ NodeTmp.ChildNodes['xProd'].text + ‘ ‘+NodeTmp.ChildNodes['CFOP'].text + ‘ ‘+NodeTmp.ChildNodes['qCom'].text + ‘ ‘+NodeTmp.ChildNodes['vUnCom'].text + ‘ ‘+NodeTmp.ChildNodes['vPro'].text);
                                                                                end;
                                                                                NodeTmp := NodeTmp.NextSibling;
                                                                                NodeSec := NodeSec.NextSibling;
                                                                                until nome = ” }
                                                                                finally
                                                                                end;
                                                                                end;
                                                                                vXMLDoc.Free;
                                                                                end;
                                                                                Table1.Close;
                                                                                Table2.Close;
                                                                                end;

                                                                                • At 2010.08.10 08:54, TBerth said:

                                                                                  Olá, Eu estou carregando o arquivo xml da seguiinte maneira:
                                                                                  vXMLDoc.LoadFromFile(nome_arquivo);

                                                                                  mas quando tento carregar um XML que contenha espaços como (’1350900_v1.10-procNFe – 1.xml’), não lê!

                                                                                  É possível eu carregar um XML que contenha espaços em seu nome??

                                                                                  Obrigado

                                                                                  • At 2010.09.06 13:42, Jeferson said:

                                                                                    Olá Caio esta sua dica é realmente muito boa tive as mesmas dúvidas aí da galera, dei uma melhorada no seu código, e agora ele importa campo por campo e tambem caminha dentro dos nodes (nós) do XML, lê os produtos tudo certinho, espalha pra galera aí, ah é case sensitive o negócio, se não estiver tudo certinho não lê. Segue o codigo abaixo

                                                                                    procedure TForm1.Button1Click(Sender: TObject);
                                                                                    var vXMLDoc: TXMLDocument;
                                                                                    NodePai,NodeSec,NodeTmp,NodeImp,NodeImposto: IXMLNode;
                                                                                    nome, codigo, estado, nota, natop, modelo, serie, emissao: WideString;
                                                                                    tiponf,municipio,cnpj,nomeemit,fantasia,endereco,numero: WideString;
                                                                                    complemento,bairro,cep,fone,ie,base,icms,basest,valorst: WideString;
                                                                                    valorprod,frete,seguro,desconto,valorii,valoripi,valorpis: WideString;
                                                                                    valorcofins,outros,totalnota,ncm,cfop,unidadecom,quantidadecom: WideString;
                                                                                    unitariocom,valorproduto,unidadetrib,quantidadetrib,unitariotrib: WideString;
                                                                                    origem,cst,cstpis,ppis,basepis,valorpisprod,cstcofins: WideString;
                                                                                    basecofins,pcofins,valorcofinsprod: WideString;
                                                                                    diretorio:string;
                                                                                    begin
                                                                                    // Cria a variável baseada no TXMLDocument
                                                                                    vXMLDoc := TXMLDocument.Create(self);

                                                                                    // Le conteúdo do arquivo XML informado
                                                                                    diretorio:=’C:\ImpactoNFE\nfegeradas\3_9_2010\nfe169.xml’;
                                                                                    vXMLDoc.LoadFromFile(diretorio);

                                                                                    // Vou colocar os dados no memo apenas como exemplo
                                                                                    Memo.lines.Add( ‘————————————————-’);
                                                                                    Memo.lines.Add( ‘Vamos inserir num campo memo (apenas para ver o resultado do teste’);
                                                                                    Memo.lines.Add( VXMLDoc.XML.Text +#13+#13 );

                                                                                    // Aqui eu peço para encontrar a primeira ocorrencia da Tag >
                                                                                    NodePai := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode(‘infNFe’);

                                                                                    //lendo os campos da nota fiscal
                                                                                    //node ide
                                                                                    NodeSec := NodePai.ChildNodes.FindNode(‘ide’);
                                                                                    NodeSec.ChildNodes.First;
                                                                                    estado := ‘UF = ‘+NodeSec.ChildNodes['cUF'].Text;
                                                                                    memo.lines.add(estado);
                                                                                    nota := ‘nota = ‘+NodeSec.ChildNodes['nNF'].Text;
                                                                                    memo.lines.add(nota);
                                                                                    natop := ‘notaop = ‘+NodeSec.ChildNodes['natOp'].Text;
                                                                                    memo.lines.add(natop);
                                                                                    modelo := ‘modelo = ‘+NodeSec.ChildNodes['mod'].Text;
                                                                                    memo.lines.add(modelo);
                                                                                    serie := ‘serie = ‘+NodeSec.ChildNodes['serie'].Text;
                                                                                    memo.lines.add(serie);
                                                                                    emissao := ‘data = ‘+NodeSec.ChildNodes['dEmi'].Text;
                                                                                    memo.lines.add(emissao);
                                                                                    tiponf := ‘tipo = ‘+NodeSec.ChildNodes['tpNF'].Text;
                                                                                    memo.lines.add(tiponf);
                                                                                    municipio := ‘municipio = ‘+NodeSec.ChildNodes['cMunFG'].Text;
                                                                                    memo.lines.add(municipio);

                                                                                    //node emit
                                                                                    NodeSec := NodePai.ChildNodes.FindNode(‘emit’);
                                                                                    NodeSec.ChildNodes.First;
                                                                                    cnpj := ‘cnpj = ‘+NodeSec.ChildNodes['CNPJ'].Text;
                                                                                    memo.lines.add(cnpj);
                                                                                    nomeemit := ‘nome = ‘+NodeSec.ChildNodes['xNome'].Text;
                                                                                    memo.lines.add(nomeemit);
                                                                                    fantasia := ‘fantasia = ‘+NodeSec.ChildNodes['xFant'].Text;
                                                                                    memo.lines.add(fantasia);

                                                                                    //node enderEmit
                                                                                    NodeTmp := NodeSec.ChildNodes['enderEmit'];
                                                                                    NodeTmp.ChildNodes.First;
                                                                                    endereco := ‘endereco = ‘+NodeTmp.ChildNodes['xLgr'].text;
                                                                                    memo.lines.add(endereco);
                                                                                    numero := ‘numero = ‘+NodeTmp.ChildNodes['nro'].text;
                                                                                    memo.lines.add(numero);
                                                                                    complemento := ‘complemento = ‘+NodeTmp.ChildNodes['xCpl'].text;
                                                                                    memo.lines.add(complemento);
                                                                                    bairro := ‘bairro = ‘+NodeTmp.ChildNodes['xBairro'].text;
                                                                                    cep := ‘cep = ‘+NodeTmp.ChildNodes['CEP'].text;
                                                                                    memo.lines.add(cep);
                                                                                    fone := ‘fone = ‘+NodeTmp.ChildNodes['fone'].text;
                                                                                    memo.lines.add(fone);
                                                                                    ie := ‘ie = ‘+NodeSec.ChildNodes['IE'].Text;
                                                                                    memo.lines.add(ie);

                                                                                    //node total
                                                                                    NodeSec := NodePai.ChildNodes.FindNode(‘total’);
                                                                                    NodeSec.ChildNodes.First;

                                                                                    //node ICMSTot
                                                                                    NodeTmp := NodeSec.ChildNodes['ICMSTot'];
                                                                                    NodeTmp.ChildNodes.First;
                                                                                    base := ‘base = ‘+NodeTmp.ChildNodes['vBC'].text;
                                                                                    memo.lines.add(base);
                                                                                    icms := ‘icms = ‘+NodeTmp.ChildNodes['vICMS'].text;
                                                                                    memo.lines.add(icms);
                                                                                    basest := ‘basest = ‘+NodeTmp.ChildNodes['vBCST'].text;
                                                                                    memo.lines.add(basest);
                                                                                    valorst := ‘valorst = ‘+NodeTmp.ChildNodes['vST'].text;
                                                                                    memo.lines.add(valorst);
                                                                                    valorprod := ‘valorprod = ‘+NodeTmp.ChildNodes['vProd'].text;
                                                                                    memo.lines.add(valorprod);
                                                                                    frete := ‘frete = ‘+NodeTmp.ChildNodes['vFrete'].text;
                                                                                    memo.lines.add(frete);
                                                                                    seguro := ‘seguro = ‘+NodeTmp.ChildNodes['vSeg'].text;
                                                                                    memo.lines.add(seguro);
                                                                                    desconto := ‘desconto = ‘+NodeTmp.ChildNodes['vDesc'].text;
                                                                                    memo.lines.add(desconto);
                                                                                    valorii := ‘valorii = ‘+NodeTmp.ChildNodes['vII'].text;
                                                                                    memo.lines.add(valorii);
                                                                                    valoripi := ‘valoripi = ‘+NodeTmp.ChildNodes['vIPI'].text;
                                                                                    memo.lines.add(valoripi);
                                                                                    valorpis := ‘valorpis = ‘+NodeTmp.ChildNodes['vPIS'].text;
                                                                                    memo.lines.add(valorpis);
                                                                                    valorcofins := ‘valorcofins = ‘+NodeTmp.ChildNodes['vCOFINS'].text;
                                                                                    memo.lines.add(valorcofins);
                                                                                    outros := ‘outros = ‘+NodeTmp.ChildNodes['vOutro'].text;
                                                                                    memo.lines.add(outros);
                                                                                    totalnota := ‘totalnota = ‘+NodeTmp.ChildNodes['vNF'].text;
                                                                                    memo.lines.add(totalnota);

                                                                                    // Esse nó vai ser usado no LOOP
                                                                                    NodeSec := NodePai.ChildNodes.FindNode(‘det’);
                                                                                    // Posiciona o primeiro elemento encontrado
                                                                                    NodeSec.ChildNodes.First;
                                                                                    repeat
                                                                                    // referencia a tag dentro de
                                                                                    NodeTmp := NodeSec.ChildNodes['prod'];
                                                                                    NodeTmp.ChildNodes.First;
                                                                                    // pega os dados que vc quiser dentro da tag
                                                                                    nome := NodeTmp.ChildNodes['xProd'].text;
                                                                                    codigo := NodeTmp.ChildNodes['cProd'].text;

                                                                                    // vamos inserir no Memo os dados
                                                                                    Memo.Lines.Add(‘———————————————–’);
                                                                                    if codigo ” then
                                                                                    begin
                                                                                    Memo.Lines.Add( codigo+’ —- ‘+nome );
                                                                                    //node prod
                                                                                    ncm := ‘ncm = ‘+NodeTmp.ChildNodes['NCM'].text;
                                                                                    memo.lines.add(ncm);
                                                                                    cfop := ‘cfop = ‘+NodeTmp.ChildNodes['CFOP'].text;
                                                                                    memo.lines.add(cfop);
                                                                                    unidadecom := ‘unidadecom = ‘+NodeTmp.ChildNodes['uCom'].text;
                                                                                    memo.lines.add(unidadecom);
                                                                                    quantidadecom := ‘quantidadecom = ‘+NodeTmp.ChildNodes['qCom'].text;
                                                                                    memo.lines.add(quantidadecom);
                                                                                    unitariocom := ‘unitariocom = ‘+NodeTmp.ChildNodes['vUnCom'].text;
                                                                                    memo.lines.add(unitariocom);
                                                                                    valorproduto := ‘valorproduto = ‘+NodeTmp.ChildNodes['vProd'].text;
                                                                                    memo.lines.add(valorproduto);
                                                                                    unidadetrib := ‘unidadetrib = ‘+NodeTmp.ChildNodes['uTrib'].text;
                                                                                    memo.lines.add(unidadetrib);
                                                                                    quantidadetrib := ‘quantidadetrib = ‘+NodeTmp.ChildNodes['qTrib'].text;
                                                                                    memo.lines.add(quantidadetrib);
                                                                                    unitariotrib := ‘unitariotrib = ‘+NodeTmp.ChildNodes['vUnTrib'].text;
                                                                                    memo.lines.add(unitariotrib);

                                                                                    //node imposto
                                                                                    NodeTmp := NodeSec.ChildNodes['imposto'];
                                                                                    NodeTmp.ChildNodes.First;

                                                                                    //node ICMS
                                                                                    NodeImp := NodeTmp.ChildNodes['ICMS'];
                                                                                    NodeImp.ChildNodes.First;

                                                                                    //node ICMS40
                                                                                    NodeImposto := NodeImp.ChildNodes['ICMS40'];
                                                                                    NodeImposto.ChildNodes.First;
                                                                                    origem := ‘origem = ‘+NodeImposto.ChildNodes['orig'].text;
                                                                                    memo.lines.add(origem);
                                                                                    cst := ‘cst = ‘+NodeImposto.ChildNodes['CST'].text;
                                                                                    memo.lines.add(cst);

                                                                                    //node PIS
                                                                                    NodeImp := NodeTmp.ChildNodes['PIS'];
                                                                                    NodeImp.ChildNodes.First;

                                                                                    //node PISAliq
                                                                                    NodeImposto := NodeImp.ChildNodes['PISAliq'];
                                                                                    NodeImposto.ChildNodes.First;
                                                                                    cstpis := ‘cstpis = ‘+NodeImposto.ChildNodes['CST'].text;
                                                                                    memo.Lines.Add(cstpis);
                                                                                    basepis := ‘basepis = ‘+NodeImposto.ChildNodes['vBC'].text;
                                                                                    memo.Lines.Add(basepis);
                                                                                    ppis := ‘ppis = ‘+NodeImposto.ChildNodes['pPIS'].text;
                                                                                    memo.Lines.Add(ppis);
                                                                                    valorpisprod := ‘valorpis = ‘+NodeImposto.ChildNodes['vPIS'].text;
                                                                                    memo.lines.Add(valorpisprod);

                                                                                    //node COFINS
                                                                                    NodeImp := NodeTmp.ChildNodes['COFINS'];
                                                                                    NodeImp.ChildNodes.First;

                                                                                    //node COFINSAliq
                                                                                    NodeImposto := NodeImp.ChildNodes['COFINSAliq'];
                                                                                    NodeImposto.ChildNodes.First;
                                                                                    cstcofins := ‘cstcofins = ‘+NodeImposto.ChildNodes['CST'].text;
                                                                                    memo.lines.add(cstcofins);
                                                                                    basecofins := ‘basecofins = ‘+NodeImposto.ChildNodes['vBC'].text;
                                                                                    memo.lines.add(basecofins);
                                                                                    pcofins := ‘pcofins = ‘+NodeImposto.ChildNodes['pCOFINS'].text;
                                                                                    memo.lines.add(pcofins);
                                                                                    valorcofinsprod := ‘valorcofins = ‘+NodeImposto.ChildNodes['vCOFINS'].text;
                                                                                    end;

                                                                                    // vai para a proxima ocorrência (se houver)
                                                                                    NodeTmp := NodeTmp.NextSibling;
                                                                                    // vai para a proxima ocorrência
                                                                                    NodeSec := NodeSec.NextSibling;
                                                                                    until nome = ”;
                                                                                    end;

                                                                                    • At 2010.10.18 12:41, Leandro said:

                                                                                      Caio, Boa Tarde.

                                                                                      Estou tentando usar essa estrutura de leitura para o meu arquivo xml, e não estou conseguindo ler as informações desta tag (exemplo):

                                                                                      Como eu faria para ler esses 2 registros por gentileza.
                                                                                      Obrigado

                                                                                      • At 2010.10.18 12:44, Leandro said:

                                                                                        Exemplo das tags que não apareceram a cima.

                                                                                        //
                                                                                        //
                                                                                        //
                                                                                        //

                                                                                        • At 2010.10.18 12:45, Leandro said:

                                                                                          contratos
                                                                                          contrato id=”10″ descricao=”teste”
                                                                                          contrato id=”12″ descricao=”teste2″
                                                                                          contratos

                                                                                          • At 2010.10.18 12:52, admin said:

                                                                                            Olá Leandro,

                                                                                            Manda um modelo do arquivo XML no meu e-mail, faço um exemplo pra vc assim que puder.

                                                                                            Sds

                                                                                            • At 2010.10.29 09:39, wagner said:

                                                                                              Não funcionou pra mim. Ele está retornando nil quando faço o que está abaixo:

                                                                                              NodePai := vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode(‘det’);

                                                                                              • At 2011.02.01 15:57, Erick Antonio M P said:

                                                                                                Caio já tentei varias formas de ler uma nfe consegui mais fiquei parado em uma parte dessa nota. Com xmlmapper eu consegui dividir a nota nas partes que precisava mais os produtos que tem lotes diferentes ele so pega o primeiro item de lote e no caso muitas vezes vem dois a tres lotes dependendo do produto que neste caso são remédios e esses lotes são muito importantes para o cliente quero fazer a entrada de produtos automatica quase tudo ta pronto menos isso.
                                                                                                Pesso-lhe que se possível ajudar neste caso. vai abaixo o xml que tem um produto com dois lotes o item 7

                                                                                                35000637951VENDA DE MERC. ADQ.OU REC.DE TERCEIROS E15516379512010-06-142010-06-14135032081161102.3.8.201206820001250DIST. FARMACEUTICA PANARELLO LTDA – BEAV ALBERTO BENASSI, 2560 AREA A0SANTANA3503208ARARAQUARASP148043001621094012181339741115ISENTO464430145134418000120CELSO LUIZ PREVIDENTE MEAV PRES KENNEDY462ACENTRO3555802URANIASP1576000001763413547050007601150983147891106001946ASPIRINA PREVENT CPR 1X30-ETICO300490245405FRC28.410016.827891106001946FRC27.91001.00BXFDU9522009-08-012012-08-0111.1806021.040.940404NEGAT MONIT PZ 7 D DESC 6,00% R$ 1,000267607891106006378BEPANTOL POM 30G-OUTROS300450905405TB68.830052.987891106006378TB68.30003.180308A62009-08-012012-08-0111.7506066.232.960404NEGAT MONIT PZ 7 D DESC 6,00% R$ 3,181035647896548133064CILODEX POM OFT 3,5G-ETICO300490695405FRC120.560020.567896548133064FRC119.12001.444350012010-03-012012-03-0128.4206026.431.320707POSIT MONIT PZ 7 D DESC 7,00% R$ 1,441083177896251802523CLARIDERM CLEAR SERUM FPS18 CR 30G -OUTROS330499105405CX135.980035.987896251802523CX133.46002.52101821412010-02-012012-02-0159.3206047.277.800404NEGAT LIBER PZ 7 D DESC 7,00% R$ 2,521054847897076909855CLORID METFORM 850MG CPR 1X30 RANB -GENERICO300420495405BLT27.820015.647897076909855BLT24.30007.04203855922009-06-012011-05-0110.8106011.890.590707POSIT MONIT PZ 7 D DESC 45,00% R$ 7,040089587897316801390CROMOLERG 2% COL 5ML-ETICO300490995405FRC16.57006.577897316801390FRC16.11000.46F2829212010-02-112012-02-119.080608.450.420707POSIT MONIT PZ 7 D DESC 7,00% R$ 0,461069897891721015366DICLIN DRG 1X63-ETICO300660005405CX319.450058.357891721015366CX318.48002.91BR2015922010-04-012013-04-0126.89BR2016112010-04-012013-04-0126.8906076.643.820707POSIT MONIT PZ 7 D DESC 5,00% R$ 2,911039947891721044229GLUCOVANCE 500/2,5MG CPR 1X30-ETICO300490495405CX114.480014.487891721044229CX113.76000.72BR1701912008-07-012012-07-0120.0106019.020.940707POSIT MONIT PZ 7 D DESC 5,00% R$ 0,720099977896548113059LACRIMA PLUS 15ML-ETICO300490995405UN311.710035.137896548113059UN310.89002.464269432009-11-012011-11-0115.5706043.451.940404NEGAT MONIT PZ 7 D DESC 7,00% R$ 2,460586617896658002397LEUCOGEN CPS 1X20-ETICO300490995405CX179.240079.247896658002397CX176.86002.38100160712009-09-012012-09-01109.53060106.255.300707POSIT MONIT PZ 7 D DESC 3,00% R$ 2,380011207891045035040MAGNESIA BIS PAST 1X40-OUTROS300490995405CX211.280022.567891045035040CX210.72001.126488122010-03-012013-02-0115.0006028.521.270404NEGAT MONIT PZ 7 D DESC 5,00% R$ 1,121077507896548197370OFTANE COL 15ML-ETICO300490995405CX225.930051.867896548197370CX224.11003.644370922010-03-012012-03-010.0006064.132.860404NEGAT LIBER PZ 7 D DESC 7,00% R$ 3,641105157898040322120ULTRAFER GTS 30ML-ETICO300490795405FRC219.980039.967898040322120FRC217.98004.0010022222010-03-012012-03-0126.5706047.832.140404NEGAT MONIT PZ 7 D DESC 10,00% R$ 4,001.390.250.000.00450.130.000.0032.870.000.000.000.001.39450.95007795544000136BOTTION E VASQUEZ TRANSP CARGA LTDA587280440111RUA 22 BE 1280, JD ANHANGUERARIO CLAROSP1CAIXA(S)REMEDIOS0.806000637951450.95450.950006379512010-06-21450.95Codigo do Cliente -274674 Alvara do Cliente – 000007-1-0 Codigo do Giro – AR007 Total de Itens – 13 *** Total em Unidades – 27 Pedido de Compra – 86 Numero do Pedido – 048291 Representante – 2760 MARIA MORASILVA PEREIRA LOPES B.C. ICMS…….- 399,86 ICMS…………- 73,10 B.C. ICMS ST….- 567,15 ICMS ST DEB…..- 105,40 ICMS ST CLIENTE – 32,30 PRAZO MAXIMO PARA RECLAMACAO: 72 HORAS ICMS REC. POR SUBST TRIB.CONF. DEC 52364/2007 IMPOSTO REC POR SUBST-ART 313-A,31 3-E E 313-G DO RICMS86L9X5oeM1OJEjfso3jtJJpiRq1jE=uB/6gLuxy0FOY7NtE869h3qb8jn/AZ+NsaMQTd6rLiMegecyOWjryffrcKKVnMdleW+211Xbsk052iDSV2aiteFRhMc48Ul3mhdvbwqMWHPiaDcaWNJseJl42T2x6JbdqJPxegbBCazr1Rs/dgyucqK85mjCKjKHfyYM0J4c6IU=MIIGPzCCBSegAwIBAgIIR9fxoOMeYBowDQYJKoZIhvcNAQEFBQAwTDELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwgdjEwHhcNMDkwNjI2MTgwMDAwWhcNMTAwNjI2MTgwMDAwWjCB9DELMAkGA1UEBhMCQlIxEzARBgNVBAoTCklDUC1CcmFzaWwxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRgwFgYDVQQLEw8wMDAwMDEwMDA2MDM0NjQxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UECxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEyMDAGA1UEAxMpRElTVFJJQlVJRE9SQSBGQVJNQUNFVVRJQ0EgUEFOQVJFTExPIExUREEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL4TbgTj3ou2jncWQ56OvX0hGCWyJNBug2L8YLUxgr6WFPtRw2YI0vQDTXxMnVT46CUOvI7Ai35QbxnPg9aH8O8oJnhosJZOLU8XtmkRDC2NGne0A3rRuBCYT7ES4uQUoJq3HbvybH3IUvQwAchytNlwdxLWbS7Ykw3LFY3L0BWrAgMBAAGjggL+MIIC+jAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB8GA1UdIwQYMBaAFLdgqFv5sqauAO1069VKyZZoZvVcMIHBBgNVHREEgbkwgbaBGUZSRVpFTkRFQFBBTkFSRUxMTy5DT00uQlKgPQYFYEwBAwSgNBMyMjYxMTE5NzY3ODgwNDU5MDE0OTAwMDAwMDAwMDAwMDAwMDAwMDAzMTQ3ODcxU1NQR0+gJgYFYEwBAwKgHRMbQUxFWEFORFJFIEZBQklBTk8gUEFOQVJFTExPoBkGBWBMAQMDoBATDjAxMjA2ODIwMDAwMTA1oBcGBWBMAQMHoA4TDDAwMDAwMDAwMDAwMDBXBgNVHSAEUDBOMEwGBmBMAQIBBjBCMEAGCCsGAQUFBwIBFjRodHRwOi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvcmVwb3NpdG9yaW8vZHBjMIHwBgNVHR8EgegwgeUwSaBHoEWGQ2h0dHA6Ly93d3cuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwQ6BBoD+GPWh0dHA6Ly9sY3IuY2VydGlmaWNhZG9zLmNvbS5ici9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2MS5jcmwwU6BRoE+GTWh0dHA6Ly9yZXBvc2l0b3Jpby5pY3BicmFzaWwuZ292LmJyL2xjci9TZXJhc2EvcmVwb3NpdG9yaW8vbGNyL3NlcmFzYWNkdjEuY3JsMIGXBggrBgEFBQcBAQSBijCBhzA8BggrBgEFBQcwAYYwaHR0cDovL29jc3AuY2VydGlmaWNhZG9kaWdpdGFsLmNvbS5ici9zZXJhc2FjZHYxMEcGCCsGAQUFBzAChjtodHRwOi8vd3d3LmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvY2FkZWlhcy9zZXJhc2FjZHYxLnA3YjANBgkqhkiG9w0BAQUFAAOCAQEAUj4exoT+F8E9w8oJxW4fxPJgAchRVglcieYe9NZVmUffsb/MgkY8WN3SwM6EbQ1VZOe2B1LQY4IMmMIYrhznV1kYDQq28am9WgtrHQQdwJUF4Y3sIEG8FHXM+/AKwrnbynrIkfUTe47PPabk6ZelTwrsuu2DiGueltRZWyHQYBTWY70o8vtwitscKvbHECd1F73euoMmyI+p7lXc5yNafWWFoHa044psspgR150abzci9V4WUA+udqgog6f+vW7RZcWRZcC7b0US4pbmq5PsFvLybtSpTjMFF63PBCRJo49+bL1YdRzwozOCrjfHIOYJi3SUG7x1bYGgeOIH1L7/zg==1SP_NFE_PL_005e351006012068200012505500100063795100063795162010-06-14T23:47:55135100374697051L9X5oeM1OJEjfso3jtJJpiRq1jE=100Autorizado o uso da NF-e

                                                                                                • At 2011.02.03 14:41, Paulo HP Santos said:

                                                                                                  Boa tarde Caio,

                                                                                                  Muito legal se tuto mas estou com um pequeno probleminha, não é relacionado à NFe, é o seguinte uso um XML para guardar configurações de um aplicativo de backup, tenho a seguinte linha no xml:

                                                                                                  arquivo.txt
                                                                                                  arquivo.txt2

                                                                                                  então na hora de iniciar o sistema a idéia é mostrar esses nomes dos 2 arquivos em uma area de texto, meu problema é o seguinte, estou lendo o xml, minha função faz um laço de reptição, mas só pega o nome do 1º item, o outro ele não pega. Segue o código abaixo:

                                                                                                  LArquivosBackup.Items.Clear;

                                                                                                  NodePai := XmlConfig.DocumentElement.ChildNodes.FindNode(‘Bancos’);

                                                                                                  Repeat
                                                                                                  if NodePai nil
                                                                                                  then Begin
                                                                                                  if NodePai.ChildNodes['Endereco'].text” then
                                                                                                  LArquivosBackup.Items.Add(NodePai.ChildNodes['Endereco'].text);
                                                                                                  XTEST:= NodePai.ChildNodes['Endereco'].text;
                                                                                                  NodePai := NodePai.NextSibling;

                                                                                                  End;

                                                                                                  Until NodePai = nil;

                                                                                                  Desde já agardeço

                                                                                                  • At 2011.11.17 19:30, Gerton Rodrigues said:

                                                                                                    Caio e possível importar para o access 2007 um lote de NFE em xml sem ter que importar uma a uma?

                                                                                                    • At 2011.11.17 19:31, Gerton Rodrigues said:

                                                                                                      Caio, é possível importar para o access um lote de NFE em XML sem ter que importar uma a uma?

                                                                                                      • 34 old comments are not displayed. Click to display all comments

                                                                                                      You must be logged in to post a comment.