Estou desenvolvendo um aplicativo Java para escrever e ler um arquivo no formato XML, porem ao ler os dados tenho dois problemas:
1 - Quando eu tento gravar caracteres que possuem acento ou cedilha, eles nao sao gravados corretamente e nao consigo ler o arquivo.
2 - Alguns dados que eu tento tratar, aparecem “;br>” no meio do texto. No meu JTextArea, aparece como “ ”. Existe uma maneira de trata-lo como uma tag de HTML ?
Eu tentei solucionar o 1º, colocando o cabecalho do XML:
<?xml version=“1.0” encoding=“ISO-8859-1” ?>
porem o mesmo nao funcionou. Onde eu estou errando ?[/list]
Não basta apenas colocar <?xml version=“1.0” encoding=“ISO-8859-1” ?> no seu XML, você tem que realmente gravar os bytes nesta codificação. Para isso, use assim:
try {
Writer out = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("outfilename"), "8859_1"));
out.write(aString);
out.close();
} catch (UnsupportedEncodingException e) {
} catch (IOException e) {
}
Quanto a segunda dúvida, tente usar a tag CDATA da especificação XML. Procure por ela no Google que você entenderá o que estou dizendo.
Uma coisa que percebi é que normalmente projetos que no início são do tipo “ah, é só escrever um arquivinho XML, acho que não tem problemas escrever direto, é um formato texto simples” acabam tropeçando nesses problemas (caracteres como ’ " < > , e outras coisas chatas) mais cedo ou mais tarde. No fim a gente acaba escrevendo uma biblioteca XML proprietária, em vez de usar uma que está pronta. (Eu mesmo tive esse problema em C++ …)
Muita gente fala do JDOM; embora ela não faça parte da especificação J2EE, parece que ela é fácil de usar.
[quote=“alexandremlima”]Não basta apenas colocar <?xml version=“1.0” encoding=“ISO-8859-1” ?> no seu XML, você tem que realmente gravar os bytes nesta codificação. Para isso, use assim:
try {
Writer out = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("outfilename"), "8859_1"));
out.write(aString);
out.close();
} catch (UnsupportedEncodingException e) {
} catch (IOException e) {
}
Quanto a segunda dúvida, tente usar a tag CDATA da especificação XML. Procure por ela no Google que você entenderá o que estou dizendo.[/quote]
Quanto a primeira dúvida, a minha classe que escrevia o arquivo ja usava o “8859_1”, mesmo nao entendendo direito o por quê. Mas mesmo escrevendo nessa codificação, os caracteres com acento e cedilha, continuam sendo escritos de forma estranha.
Quando a minha outra dúvida, eu acho que terei de usar o tutorial de XSLT do GUJ para tratar estes dados, não é?