- 11.4. Utilidadades
11.4.5. LeArquivoANSI - 11.4.4. Identar XML
« Anterior - 11.5. CriaProc
Próximo »
11.4.5. LeArquivoANSI
Ler arquivo em codificação ANSI
Assinatura:
string LeArquivoANSI(string nomeArquivo, out int cResultado, out string msgResultado);
Descrição:
Funcionalidade recuperar o conteúdo do arquivo em codificação ANSI, o conteúdo do arquivo lido pode ter codificação ANSI ou UTF-8.
O XML deve ter codificação UTF-8, mas a maioria das aplicações trabalham com a codificação ANSI e isto causa problemas quando existem caracteres especiais ou acentuados, pois estes caracteres tem representação diferente no ANSI e no UTF-8.
Assim, o mesmo XML pode ser gravado de formas diversas e a leitura do arquivo sem considerar estes detalhes pode causar problema de corrompimento do arquivo, para um melhor entendimento veja o exemplo:
XML original com caractere especial de numeral º e caracteres acentuados: ã e í
<?xml version="1.0" encoding="UTF-8"?><CTe><xNome>1º Tabelião de Protesto de Títulos</xNome></CTe>
O XML pode ser gravado de 3 formas diferentes:
- codificação ANSI - é a forma normal de gravação das aplicações Delphi, VB 6.0, etc.;
- codificação UTF-8 - a string é convertida em UTF-8 antes da gravação com o uso de funções de conversão de ANSI para UTF-8;
- codificação UTF-8, com BOM - a string é gravada em UTF-8 com o BOM Byte order Mark no início do arquivo.
A leitura dos arquivos pode ter os seguintes resultados:
- XML igual ao original, quando o arquivo foi gravado com a codificação ANSI
<?xml version="1.0" encoding="UTF-8"?><NFe><xNome>1º Tabelião de Protesto de Títulos</xNome></NFe>
- XML com caracteres especiais e acentuação corrompidos, quando o arquivo foi gravado com a codificação UTF-8
Neste caso, o numeral º virou ú e a com til ã virou ã e o i com acento agudo í virou Ã.
<?xml version="1.0" encoding="UTF-8"?><NFe><xNome>1º Tabelião de Protesto de TÃtulos</xNome></NFe>
- caracteres de BOM  no início do arquivo e XML com caracteres especiais e acentuação corrompidos, quando o arquivo foi gravado com a codificação UTF-8
Neste caso, o numeral **º virou ú e a com til ã virou ã e o i com acento agudo í virou Ã.
<?xml version="1.0" encoding="UTF-8"?><NFe><xNome>1º Tabelião de Protesto de TÃtulos</xNome></NFe>
A funcionalidade LeArquivoANSI lê os 3 tipos de arquivo e devolve uma string com codificação ANSI.
Parâmetros:
nome | tipo | fluxo | descrição |
---|---|---|---|
nomeArquivo | string | entrada | informar uma nome com o caminho do arquivo que deseja ler. |
cResultado | inteiro | saída | retorna o resultado da chamada do WS. |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS |
Retorno:
O resultado da chamada é uma string com o XML identado.
O cResultado retorna um dos seguintes códigos:
código | Mensagem | origem | regra |
---|---|---|---|
7330 | Leitura do arquivo realizada com sucesso | DLL | - |
7331 | Erro: Falha na leitura do arquivo XML :[Mensagem de Erro] | DLL | - |
Histórico de atualização:
- 2011-12-16 - v1.0- Versão preliminar.
Exemplos:
Delphi
// Util := CreateOleObject('CTe_Util.util'); // // formata XML, com identação para melhor visualização, não gravar o XML formatado, // pois este processo CORROMPE A ASSINATURA DIGITAL // XMLAnsi := Util.LeArquivoANSI('c:\cte.xml', resultado, msgResultado); //
Visual Basic
Dim Resultado As Long Dim msgResultado As String Dim XMLAnsi As String XMLAnsi = "" msgResultado = "" ' ' instancia classe ' Dim objCTeUtil As Object Set objCTeUtil = CreateObject("CTe_Util.util") ' ' Le arquivo ' XMLAnsi = objCTeUtil.LeArquivoANSI("c:\cte.xml", Resultado, msgResultado) If Resultado = 7331 Then MsgBox msgResultado, vbInformation, "Informação" Else MsgBox XMLAnsi, vbInformation, "Informação" End If
- 11.4.5. LeArquivoANSI
11.4. Utilidadades - « Anterior
11.4.4. Identar XML - Próximo »
11.5. CriaProc