Dados x XML, como começar? (segunda parte)
Código-Fonte, Delphi outubro 17th, 2008
Essa segunda parte do tópico “Dados x XML como começar” foi criada para atender à uma demanda de usuários que têm postado dúvida para gerar o LOOP para criar os itens no XML da NF-e e, acredito que com com esses dados em mãos vai ficar mais fácil para quem está iniciando agora; segue então, o código da versão anterior com o exemplo da implementação para gerar os itens:
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 48 49 50 51 52 53 54 55 56 57 58 59 | procedure TfrmPrincipal.PnLerNfeClick(Sender: TObject); var vXMLDoc: TXMLDocument; NodeNivelA, NodeNivelB, NodeNivelC, NodeNivelD: IXMLNode; nItens : integer; begin vXMLDoc := TXMLDocument.Create(self); Try With vXMLDoc do begin Active := True; Version := '1.0'; Encoding := 'UTF-8'; AddChild('NFe','http://www.portalfiscal.inf.br/nfe'); DocumentElement.Attributes['xmlns:ds'] := 'http://www.w3.org/2000/09/xmldsig#'; DocumentElement.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance'; DocumentElement.Attributes['xsi:schemaLocation'] := 'http://www.portalfiscal.inf.br/nfe/enviNFe_v1.12.xsd'; // A - Dados da Nota Fiscal eletrônica NodeNivelA := DocumentElement; // Adiciona a Tag NodeNivelA.AddChild('infNFe'); // Adiciona atributo "Id" da Tag anterior NodeNivelA.ChildNodes['infNFe'].Attributes['Id'] := 'NFe31232131232132131231221312312312'; // Adiciona atributo "versao" da Tag anterior NodeNivelA.ChildNodes['infNFe'].Attributes['versao'] := '1.10'; // B - Identificação da Nota Fiscal eletrônica NodeNivelB := NodeNivelA.ChildNodes['infNFe']; NodeNivelB.ChildNodes['ide'].AddChild('cUF').NodeValue := '51' ; NodeNivelB.ChildNodes['ide'].AddChild('cNF').NodeValue := '000001'; // Exemplo Adiciona Itens For nItens := 1 to 2 do begin // adiciona tag <det> com attributo NodeNivelC := NodeNivelB.AddChild('det'); NodeNivelB.ChildNodes.Last.Attributes['nitem'] := IntToStr(nItens); // adiciona tag <prod> à partir da tag <det> NodeNivelD := NodeNivelC.ChildNodes['prod']; NodeNivelD.AddChild('cProd').Nodevalue := IntToStr(nItens)+'121231111'; NodeNivelD.AddChild('cEan').Nodevalue := '7891133005801'; NodeNivelD.AddChild('xProd').Nodevalue := 'ABRACADEIRA C/PREGO FMX 6 BR - 580'; NodeNivelD.AddChild('CFOP').Nodevalue := '5102'; // ..... end; //Memo4.Text := vXMLDoc.Encoding; vXMLDoc.SaveToFile('EnviNFe.xml'); Memo4.Lines.LoadFromFile('EnviNFe.xml'); end; finally vXMLDoc.Free; end; end; |