Ir para conteúdo
  • Cadastre-se

dev botao

Conversão de caracteres especiais no XML


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

Recommended Posts

Bom dia,

Fiz uma carta de correção pelo sistema da empresa onde trabalho e transmiti sem problemas pelo ACBr. Em seguida, eu pego o XML gerado pelo ACBr da propriedade FEventoRetorno.retEvento.Items.RetInfEvento.XML e salvo no meu banco de dados. Só que se abrirmos o XML dessa propriedade no navegador, vai dar problema se tiver caracteres especiais. Por exemplo, o & na tag xCorrecao.

Na função TNFeEnvEvento.TratarResposta, que está na unit ACBrNFeWebServices, é atribuído o XML da carta de correção para a propriedade citada acima. Dentro desse método identifiquei o seguinte comando:

Texto := ParseText(Texto);


Esta linha está convertendo o XML, tirando & (código HTML correspondente do e comercial) e colocando &. Comentei essa linha e o XML ficou correto no meu banco de dados. Sugiro retirá-la, ou se alguém puder explicar em qual caso ela é obrigatória, somente para entender melhor a situação.

Exemplo da tag xCorrecao do XML que será transmitido (Propriedade FPDadosMsg):

<xCorrecao>T&ST& DE CARTA DE CORR&CAO</xCorrecao>

Exemplo da tag xCorrecao após o ParseText:

<xCorrecao>T&ST& DE CARTA DE CORR&CAO</xCorrecao>

Obs: Fiz vários testes de eventos olhando o XML que a SEFAZ retorna e nenhum precisa do ParseText.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Fernando,

Favor atualizar os fontes, reinstalar os componente e refazer os testes.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 4 meses depois ...

Prezados,


Por varias vezes temos encontrado caracteres especiais no XML, existe algum comando do AcbrNfe que "limpe" os mesmos? Segue um exemplo na imagem em anexo.

Abaixo segue uma "fuction" que  tem nos auxiliado porêm ainda assim o problema persiste:

function SemCaracteresEspeciais(v_texto: string): string;
var textofinal: string;
begin
  textofinal := SemAcento(v_texto);

  textofinal := Substituir(textofinal, 'Ø', 'DIAMETRO');
  textofinal := Substituir(textofinal, 'º', ' ');
  textofinal := Substituir(textofinal, 'ª', ' ');
  textofinal := Substituir(textofinal, '  ', ' ');
//  textofinal := Substituir(textofinal, '/', '-'); //só isso para nome de arquivo //não habilite isso, se não a nf-e não roda
//  textofinal := Substituir(textofinal, '\', '-'); //só isso para nome de arquivo //não habilite isso, se não a nf-e não roda
//  textofinal := Substituir(textofinal, ':', '-'); //só isso para nome de arquivo //não habilite isso, se não a nf-e não roda
  textofinal := Substituir(textofinal, 'µ', ' ');
  textofinal := Substituir(textofinal, '“', ' ');
  textofinal := Substituir(textofinal, 'm²', 'm2');
  textofinal := Substituir(textofinal, 'm³', 'm3');
  textofinal := Substituir(textofinal, '³', '3');
  textofinal := Substituir(textofinal, '²', '2');
  textofinal := Substituir(textofinal, '*', 'x');//
  textofinal := Substituir(textofinal, '', 'A');//
  textofinal := Substituir(textofinal, Char(141), ' '); 
  textofinal := Substituir(textofinal, Char(128), ' ');
  textofinal := Substituir(textofinal, '&', 'E');
  textofinal := Trim(textofinal);


  Result := textofinal;
end;

Agradeço desde já.

Cleverson

 

caracteres especiais.jpg

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

o problema não é tanto no xml, mas em buscas e tudo mais, não sei se é comum para vocês, mas os clientes geralmente copiam de sites de internet os dados de cadastro, daí buga na pesquisa do banco de dados, entre outros problemas.

Na verdade o que procuro é tipo um Trim, que tira os espaços, mas que tire esses caracteres bugados.

Mas sem stress, se eu achar algo deixo aqui no fórum, ou se não vou melhorando a função que postei.

Obrigado pela ajuda

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2132 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.