Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão na Leitura do arquivo XML


tbalbinos
  • Este tópico foi criado há 4029 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia, recebi um XML de um fornecedor e ao executar um AcbrNFe1.notasfiscais.loadfromFile(......) retornou o erro "Não encontrei inicio do URI: Aspas inicial".

Ao visualizar o xml no navegador abriu normalmente, porem editar o mesmo com o bloco de notas, percebi que as aspas no xml estava sendo a simples:

<?xml version='1.0' encoding='utf-8'?> o certo é <?xml version="1.0" encoding="utf-8"?>

Para não ter que ficar editando o XML toda vez que isso acontecer eu alterei no meu fonte do ACbr mais precisamente na unit pcnNFeR a função e deu certo. Gostaria de sugerir essa mudança no fonte principal do acbr assim acho que ficaria disponível a todos e também eu não teria que mexer toda vez que eu atualizar meu fonte.

o trecho que alterei esta destacado abaixo, e ai o que acham ? ahh o XML que veio com o problema esta anexo.

function TNFeR.LerXml: boolean;

var

ok: boolean;

i, j, k, z, nItem: integer;

Arquivo, Itens, ItensTemp, VersaoInfNFe, Temp_VersaoInfNFe, NumItem: AnsiString;

Function VerificaParSt(const t: TpcnCSTIcms): TpcnCSTIcms;

// Verifica se existe Partilha ou St

begin

Result := t;

case t of

// ICMSPart (N10a)

cst10 : if ( nfe.Det.Imposto.ICMS.UFST <> '') then Result := cstPart10;

cst90 : if ( nfe.Det.Imposto.ICMS.UFST <> '') then Result := cstPart90;

//ICMSST (N10b)- Repasse de ICMS

cst41 : if ( ( nfe.Det.Imposto.ICMS.vBCSTRet > 0) or

( nfe.Det.Imposto.ICMS.vICMSSTRet > 0) or

( nfe.Det.Imposto.ICMS.vBCSTDest > 0) or

( nfe.Det.Imposto.ICMS.vICMSSTDest > 0) )

then Result := cstRep41;

end;

end;

begin

if Pos(Chr(39), Leitor.Arquivo) <> 0 then

Leitor.Arquivo := StringReplace(Leitor.Arquivo, Chr(39), '"', [rfReplaceAll]);

I := 0;

I := RetornarPosEx('Id=', Leitor.Arquivo, I + 6);

if I = 0 then

raise Exception.Create('Não encontrei inicio do URI: Id=');

I := RetornarPosEx('"', Leitor.Arquivo, I + 2);

if I = 0 then

raise Exception.Create('Não encontrei inicio do URI: aspas inicial');

J := RetornarPosEx('"', Leitor.Arquivo, I + 1);

if J = 0 then

raise Exception.Create('Não encontrei inicio do URI: aspas final');

XML_PROBLEMA.xml

Thiago Balbino

Analista de Sistemas Programador

email: [email protected]

Muriaé - MG

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

O manual orienta os atributos estarem entre ", irei verificar se sua alteração não tem nenhum efeito colateral e após os testes adiciono ao SVN.

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Tenho vários clientes que têm aspas simples (') no nome, no xml ele fica como:

ART'PAPEIS LTDA - ME

Se executar este código, será substituido por aspas duplas, acredito que dará problema, fazendo com que no danfe saia

ART"PAPEIS LTDA - ME

Acredito que o correto seria a emissão correta com aspas duplas

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...
  • Este tópico foi criado há 4029 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.