Pessoal, bom dia 
Estou com dúvidas em relação ao tratamento de caracteres especiais em Java para arquivos XML
Exemplo, Tenho o seguinte XML:
<?xml version="1.0" encoding="UTF-8"?>
<inutNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<infInut Id="ID99999999999999999999999999999999999999999">
<tpAmb>2</tpAmb>
<xServ>INUTILIZAR</xServ>
<cUF>42</cUF>
<ano>11</ano>
<CNPJ>99999999999999</CNPJ>
<mod>55</mod>
<serie>1</serie>
<nNFIni>1</nNFIni>
<nNFFin>1</nNFFin>
<xJust>Teste inutilizaçao de numeros da NFe</xJust>
</infInut>
</inutNFe>
Obs: Neste XML quero alterar na tag a palavra inutilização por inutilizacao
Criei uma função para tratar caracteres especiais, baseando neste exemplo:
º “”
“*” “”
‘"’ “”
“’” “”
º “”
& “”
° “”
§ “”
ª “”
à a
ã a
á a
â a
è e
ê e
é e
í i
õ o
ó o
ô o
ú u
ç c
ñ n
À A
à A
Á A
 A
È E
Ê E
É E
Í I
Ô O
Ó O
Ô O
Ú U
Ç C
Ñ N
ø “”
Ø “”
Baseando neste exemplo, fiz esta função:
//Trata caracteres especiais
public static String trataCaracteres(String xml)
{
String[] caractereBranco = {
"\\º", "\\*", "\\'", "\\º", "\\&", "\\°", "\\§", "\\ª", "\\Ø", "\\ø"};
for (int i = 0; i < caractereBranco.length; i++)
{
xml = xml.replaceAll(caractereBranco[i], "");
}
xml = xml.replaceAll("à", "a");
xml = xml.replaceAll("ã", "a");
xml = xml.replaceAll("á", "a");
xml = xml.replaceAll("â", "a");
xml = xml.replaceAll("è", "e");
xml = xml.replaceAll("ê", "e");
xml = xml.replaceAll("é", "e");
xml = xml.replaceAll("í", "i");
xml = xml.replaceAll("õ", "o");
xml = xml.replaceAll("ó", "o");
xml = xml.replaceAll("ô", "o");
xml = xml.replaceAll("ú", "u");
xml = xml.replaceAll("ç", "c");
xml = xml.replaceAll("ñ", "n");
xml = xml.replaceAll("À", "A");
xml = xml.replaceAll("Ã", "A");
xml = xml.replaceAll("Á", "A");
xml = xml.replaceAll("Â", "A");
xml = xml.replaceAll("È", "E");
xml = xml.replaceAll("Ê", "E");
xml = xml.replaceAll("É", "E");
xml = xml.replaceAll("Í", "I");
xml = xml.replaceAll("Ô", "O");
xml = xml.replaceAll("Ó", "O");
xml = xml.replaceAll("Ú", "U");
xml = xml.replaceAll("Ç", "c");
xml = xml.replaceAll("Ñ", "n");
return xml;
}
Entretanto, quando eu realizo a conversão com este código:
XMLEnvio = assinaXML.lerXML(caminhoXML);
XMLEnvio = XMLEnvio.replaceAll("\\n", "");
XMLEnvio = Assinador.trataCaracteres(XMLEnvio);
FileWriter fw = new FileWriter("D:\\teste_crt.xml");
fw.write(XMLEnvio);
fw.close();
O retorno da conversão vem desta forma:
<?xml version="1.0" encoding="UTF-8"?>
<inutNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<infInut Id="ID99999999999999999999999999999999999999999">
<tpAmb>2</tpAmb>
<xServ>INUTILIZAR</xServ>
<cUF>42</cUF>
<ano>11</ano>
<CNPJ>99999999999999</CNPJ>
<mod>55</mod>
<serie>1</serie>
<nNFIni>1</nNFIni>
<nNFFin>1</nNFFin>
<xJust>Teste inutilizaAao de numeros da NFe</xJust>
</infInut>
</inutNFe>
“inutilizaAao”? Ou seja, invéz de trocar ‘ç’ por ‘c’, é colocado um A
Sinceramente não entendi o que aconteceu
Alguém sabe me informar onde estou errando na função? É assim mesmo que se faz o método que substitui caracteres especiais? Existe algum método diferente ou mais seguro para realizar este tipo de processamento?
Desculpa pela ignorância.
Agradeço desde já…