Ler xml nfe 4.0 com erro
10/08/2018
0
Boa noite.
Estou com o seguinte problema, até a nfe 3.0 eu conseguia ler o xml sem problema algum
Com a mudança do lay-out para 4.0 me código começou a dar erro
Notei que existem diferenças nos cabeçalhos entre uma versão e outra porém não conseguí resolver.
O xml da 3.0 é assim
<?xml version="1.0"?>
-<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10">
-<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
-<infNFe versao="3.10" Id="NFe35180569012656000120550010000126521114102842">
-<ide>
<cUF>35</cUF>
E da 4.0 é assim
<?xml version="1.0" encoding="UTF-8"?>
-<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
-<infNFe Id="NFe35180869012656000120550010000133301801249518" versao="4.00">
-<ide>
<cUF>35</cUF>
O código que utilizo na 3.0 é esse, porém preciso que funciona na 4.0
NodePai :=vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode('infNFe');
NodeSec := NodePai.ChildNodes.FindNode('ide');
NodeSec.ChildNodes.First;
{ ************************ Cabeçalho da NFe ************************ }
estadoEmitente := 'UF = '+NodeSec.ChildNodes['cUF'].Text;
nrNota := NodeSec.ChildNodes['nNF'].Text;
natop := NodeSec.ChildNodes['natOp'].Text;
Alguém teria uma luz?
Desde ja agradeço
Estou com o seguinte problema, até a nfe 3.0 eu conseguia ler o xml sem problema algum
Com a mudança do lay-out para 4.0 me código começou a dar erro
Notei que existem diferenças nos cabeçalhos entre uma versão e outra porém não conseguí resolver.
O xml da 3.0 é assim
<?xml version="1.0"?>
-<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10">
-<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
-<infNFe versao="3.10" Id="NFe35180569012656000120550010000126521114102842">
-<ide>
<cUF>35</cUF>
E da 4.0 é assim
<?xml version="1.0" encoding="UTF-8"?>
-<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
-<infNFe Id="NFe35180869012656000120550010000133301801249518" versao="4.00">
-<ide>
<cUF>35</cUF>
O código que utilizo na 3.0 é esse, porém preciso que funciona na 4.0
NodePai :=vXMLDoc.DocumentElement.childNodes.First.ChildNodes.FindNode('infNFe');
NodeSec := NodePai.ChildNodes.FindNode('ide');
NodeSec.ChildNodes.First;
{ ************************ Cabeçalho da NFe ************************ }
estadoEmitente := 'UF = '+NodeSec.ChildNodes['cUF'].Text;
nrNota := NodeSec.ChildNodes['nNF'].Text;
natop := NodeSec.ChildNodes['natOp'].Text;
Alguém teria uma luz?
Desde ja agradeço
Osvaldo Anjo
Curtir tópico
+ 0
Responder
Posts
10/08/2018
Osvaldo Anjo
Obrigado, resolvido
Fiz da seguinte forma
NodePai :=vXMLDoc.DocumentElement.childNodes['infNFe'];
NodeSec := NodePai.ChildNodes.FindNode('ide');
NodeSec.ChildNodes.First;
{ ************************ Cabeçalho da NFe ************************ }
estadoEmitente := 'UF = '+NodeSec.ChildNodes['cUF'].Text;
nrNota := NodeSec.ChildNodes['nNF'].Text;
natop := NodeSec.ChildNodes['natOp'].Text;
Mas gora tenho outro problema, como pegar o atributo Id="NFe35180869012656000120550010000133301801249518" da linha abaixo?
<infNFe Id="NFe35180869012656000120550010000133301801249518" versao="4.00">
Fiz da seguinte forma
NodePai :=vXMLDoc.DocumentElement.childNodes['infNFe'];
NodeSec := NodePai.ChildNodes.FindNode('ide');
NodeSec.ChildNodes.First;
{ ************************ Cabeçalho da NFe ************************ }
estadoEmitente := 'UF = '+NodeSec.ChildNodes['cUF'].Text;
nrNota := NodeSec.ChildNodes['nNF'].Text;
natop := NodeSec.ChildNodes['natOp'].Text;
Mas gora tenho outro problema, como pegar o atributo Id="NFe35180869012656000120550010000133301801249518" da linha abaixo?
<infNFe Id="NFe35180869012656000120550010000133301801249518" versao="4.00">
Responder
11/08/2018
Osvaldo Anjo
Obrigado, ja resolví
segue para quem precisar
NodePai := vXMLDoc.DocumentElement.ChildNodes.FindNode('infNFe');
if NodePai <> nil then
begin
chave := NodePai.GetAttributeNS('Id','');
chave:=copy(chave,4,length(chave));
end;
segue para quem precisar
NodePai := vXMLDoc.DocumentElement.ChildNodes.FindNode('infNFe');
if NodePai <> nil then
begin
chave := NodePai.GetAttributeNS('Id','');
chave:=copy(chave,4,length(chave));
end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)