Escrita de arquivo nao aceita caracteres com acento

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 é?