Problemas a atribuir um nó do XML a uma variavel

23/01/2023

0

Olá
Estou tentando ler um arquivo XML e estou tendo problema ao tentar ler um item (Nó) do arquivo...
Quando tento pegar o nó ele me retorna a mensagem:

"Invalid Point Operation"

O erro ocorre exatamente na execução desta linha:

" NoInfNfe:=XMLDocument1.ChildNodes.FindNode(''nfeProc'');"

Aleguem sabe o que eu posso estar fazendo errado?

Segue abaixo o Trecho do algoritmo até o ponto exato em que o erro ocorre...

**********************************************************************************
Function TDataModule3.RetXml(Arquivo:String):TAtbNfe;
Var
AtbXml :TAtbNfe;
NoDetalhe :Ixmlnode;
NoInfNfe :Ixmlnode;
NoProduto :Ixmlnode;
NoCodStb :Ixmlnode;
NoTotalNfe :Ixmlnode;
NoDestinatario :Ixmlnode;
NoEmitente :Ixmlnode;
NoIdentificacao:Ixmlnode;
i :Integer;
VsDatAux :String;
ViNumIte :Integer;
VfVlrAux :String;
XMLDocument1: TXMLDocument;
vst :string;
Begin

ViNumIte:=1;
XMLDocument1.Free;
AtbXml:=TAtbNfe.Create;
XMLDocument1:=TXMLDocument.Create(self);

//**** Tabela de Itens da NFE ****
//*Cria o client dataset vcitenfe e define os campos ****
AtbXml.fvcitenfe := TClientDataSet.Create(Self);
AtbXml.fvcitenfe.Close;
AtbXml.fvcitenfe.FieldDefs.Clear;
AtbXml.fvcitenfe.FieldDefs.add(''Item'',ftInteger);
AtbXml.fvcitenfe.FieldDefs.add(''codprotudo'',ftString,10);
AtbXml.fvcitenfe.FieldDefs.add(''familia'',ftInteger);
AtbXml.fvcitenfe.FieldDefs.add(''desprotudo'',ftString,70);
AtbXml.fvcitenfe.FieldDefs.add(''medida'',ftString,03);
AtbXml.fvcitenfe.FieldDefs.add(''quantidade'',ftFloat);
AtbXml.fvcitenfe.FieldDefs.add(''vlrunitario'',ftFloat);
AtbXml.fvcitenfe.FieldDefs.add(''vlrtotal'',ftFloat);
AtbXml.fvcitenfe.FieldDefs.add(''vlrdesconto'',ftFloat);
AtbXml.fvcitenfe.FieldDefs.add(''vlritem'',ftFloat);
AtbXml.fvcitenfe.FieldDefs.add(''codncm'',ftInteger);
AtbXml.fvcitenfe.FieldDefs.add(''CFOP'',ftInteger);
AtbXml.fvcitenfe.FieldDefs.add(''cdcest'',ftInteger);
AtbXml.fvcitenfe.FieldDefs.add(''codbar'',ftFloat);
AtbXml.fvcitenfe.FieldDefs.add(''CSOSN'',ftInteger);
AtbXml.fvcitenfe.CreateDataSet;
/////////////////////////////////////////////////////////
// XMLDocument1.LoadFromFile(Arquivo);
XMLDocument1.LoadFromFile(''C:\Asystem\ebc.xml'');
NoInfNfe:=XMLDocument1.ChildNodes.FindNode(''nfeProc'');
**********************************************************************************
Amauri Alves

Amauri Alves

Responder

Posts

23/01/2023

Frank Hosaka

Tente usar isso:

NoInfNfe:=XMLDocument1.ChildNodes.FindNode('nfeProc',' ');

ou seja, o segundo parâmetro é um espaço. Encontrei essa dica nessa página: https://stackoverflow.com/questions/15404645/trying-to-find-nodes-in-xml-using-childnodes-findnode
Responder

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

Aceitar