12 janeiro 2009

IE não lê XML sem Encoding

O maldito Internet Explorer, que como sempre tem que ser diferente dos outros navegadores.
Uma dica para quem quer ler um arquivo XML através do JavaScript. Ao gerar o XML, não se esqueça de colocar no cabeçalho do arquivo o encoding que está sendo utilizado.

Sem isso o Internet Explorer não consegue ler o arquivo, fazendo com que o coitado do programador perca horas e vários fios de cabelo.

Segue um exemplo de cabeçalho de arquivo XML com o encoding:
<?xml version="1.0" encoding="ISO-8859-1"?>

Aproveitando para deixar outra dica.

Para carregar um XML e converter em String também temos diferença entre IE e Outros.

Internet Explorer:
docXML = new ActiveXObject("Microsoft.XMLDOM");
docXML.async = false;
docXML.load("arquivo.xml");

alert(docXML.xml);

Mozilla
docXML = document.implementation.createDocument('','',null);
docXML.async = false;
docXML.load("arquivo.xml");
alert((new XMLSerializer()).serializeToString(docXML))

Fontes:
[0] = http://www.w3schools.com/Xml/xml_parser.asp
[1] = http://www.hiteshagrawal.com/javascript/convert-xml-document-to-string-in-javascript

3 comentários:

  1. Nunca tive a necessidade de ler um XML do fileSystem da própria máquina do cliente com javascript - normalmente fazemos requisições assíncronas para ler do host que hospeda o site/aplicação, né? hehe

    Mas, outra vez o IE com as suas bizarrices...

    Abraço!

    ResponderExcluir
  2. Suas quatro primeiras palavras dizem tudo sobre o que me vem a mente quando tenho de testar algo no IE, eu mesmo já tive problema com IE por não saber como ele conseguia ler o arquivo xml. foi um bom post.

    ResponderExcluir
  3. Chris,

    Mas esse erro não acontece somente quando se lê um XML localmente. Se o XML estiver no servidor, o mesmo erro ocorre.

    De qualquer forma, enche o saco esse IE.

    Um abraço!

    ResponderExcluir