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
Osvaldo Anjo

Osvaldo Anjo

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

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;
Responder

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

Aceitar