Tag em branco XMLDocument retorna erro

Delphi

XML

11/07/2021

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

Curtidas 0

Respostas

Elismar Serviço)

Elismar Serviço)

11/07/2021

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
GOSTEI 0
Gxf

Gxf

11/07/2021

tente algo como:

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

Paulo

11/07/2021

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;
GOSTEI 0
POSTAR