Ola …
Boa tarde a todos
Estou desenvolvendo um sistema , onde carrego as classes a partir de um
xml usando JAXB mas estou tendo problemas com caracteres especias.
Alguem sabe se o JAXB tem alguma função pra tratar esses caracteres ?
desde já agradeço,
Juliano Ribeiro
public static String semAcento(String txt) {
String s="";
for (int i = 0; i < txt.length(); i++) {
char c=txt.charAt(i);
switch (c) {
case 'Á':
case 'À':
case 'Ã':
c='A';
break;
case 'É':
case 'Ê':
c='E';
break;
case 'Í':
c='I';
break;
case 'Ó':
case 'Õ':
case 'Ô':
c='O';
break;
case 'Ú':
c='U';
break;
case 'Ç':
c='C';
case 'á':
case 'à':
case 'ã':
c='a';
break;
case 'é':
case 'ê':
c='e';
break;
case 'í':
c='i';
break;
case 'ó':
case 'õ':
case 'ô':
c='o';
break;
case 'ú':
c='u';
break;
case 'ç':
c='c';
break;
}
s+=c;
}
return s;
}
Seria melhor entender o problema ao inves de simplesmente arrancar os caracteres de lá. Provavelmente é encoding que vc não esta tratando direito, mas sem ver o problema fica dificil.
Sem falar que vc pode estar mascarando o problema, tipo outra parte do sistema pode estar com algum comportamento anômalo (tipo convertendo UTF-8 pra Latin1 quando não deveria) e vc não percebeu.
eu testei tirando os caracteres e deu certo, obrigado,
mas quando gero o xml pelo marshaller ele gera certo e tem uma configuração de
encoding e imaginei que na leitura tb deveria ter
esse é o codifo que uso pra gerar o xml
String teste = "";
JAXBContext context = JAXBContext.newInstance(st.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(st, System.out);
marshaller.marshal(st, new FileWriter("c:/envio.xml"));
e esse é o codigo que uso pra ler o xml
JAXBContext context = JAXBContext.newInstance("br.inf.portalfiscal.nfe");
Unmarshaller unmarshaller = context.createUnmarshaller();
Object obj = unmarshaller.unmarshal(new File("c:/testeret.xml"));
TRetConsSitNFe ind2 = ( TRetConsSitNFe)obj;