Tag em branco XMLDocument retorna erro

11/07/2021

0

Boa tarde pessoal, baixei um arquivo XML em lote de CFe direto da sefaz, preciso ler as informações do arquivo e importar para o BD até ai sem novidades.

Meu problema é o seguinte. Dentro da tag <dest> existe a tag <cpf> e nem sempre a tag cpf é preenchida por que não é obrigatório.

Quando eu tento ler a tag cpf e ela não esta preenchida me retorna o seguinte erro.

"Could not convert variant of type (Null) into type (OleStr)"

O código abaixo está dentro de um for... que identifica a quantidade de CFe dentro do XML... e vai percorrendo todos eles e faço a leitura do CPF desta forma.


node_cfe_dest := node_Lote_CFe.ChildNodes[i].ChildNodes.FindNode(''infCFe'').ChildNodes.FindNode(''dest'');

CPF := node_cfe_dest.ChildValues[''CPF''];



Existe uma maneira de verificar se o campo está vazio ou não? Se a tag existe?
Paulo

Paulo

Responder

Posts

11/07/2021

Elismar Serviço)

Bom mesmo seria conseguir cancelar a devmedia sem dor de cabeça. Contrato de fidelização eh suco de Brasil, tu não gosta do serviço e eh obrigado a pagar multa. TNC
Responder

12/07/2021

Gxf

tente algo como:

if node_cfe_dest.ChildValues['CPF'] <> EmptyStr then
CPF := node_cfe_dest.ChildValues[''CPF''];
Responder

12/07/2021

Paulo

tente algo como:

if node_cfe_dest.ChildValues['CPF'] <> EmptyStr then
CPF := node_cfe_dest.ChildValues[''CPF''];



Não da pra usar assim pois o node não chega existir então ele da erro. Demorei p/ pensar nisso mas a solução encontrada foi.

if node_cfe_dest.ChildNodes.FindNode('CPF') <> nil then begin
        CPF := node_cfe_dest.ChildValues['CPF'];
      end;


ou então

if not (node_cfe_dest.ChildNodes.FindNode('CPF')) = nil then begin
        CPF := node_cfe_dest.ChildValues['CPF'];
end;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar