Galera, bom dia!
Estou lendo um .xml e estou entrando na linha que eu quero, porém não consigo fazer um replace para pegar só os valores que estao dentro do CDATA
Segue o código se alguém puder me ajudar…tentei usar REGEX ,mas não consegui.Obrigada desde já!
Minha linha: <![CDATA[51010C05000000000000000000000000000]]
Erro: Unclosed character class near index 9 ![CDATA[]]
String stringao = null;
BufferedReader reader1 = new BufferedReader(new FileReader("entrada.xml"));
while (reader1.ready()) {
stringao = reader1.readLine().replaceAll("\t", "");
if (stringao.startsWith("<![CDATA[") && !stringao.equals("")) {
String teste = stringao.replaceAll("![CDATA[]]", "");//aqui que dá erro
String cdServico = stringao.substring(0,2);
//painelDadosApoliceProposta.getJTextFieldCia().setText(cdServico);
}
}
RESOLUÇÃO:
[code] String cdServico = null;
String stringao = “<[CDATA[51010C050000]]>”;
Pattern p = Pattern.compile("[0-9][(*[0-9a-zA-Z])]");
Matcher m = p.matcher(stringao);
boolean b = false;
StringBuilder retorno = new StringBuilder();
while(b = m.find()){
retorno.append(m.group());
cdServico = retorno.substring(0,2);//51
}
Eu acho com o DOM muito mais fácil. Até porque é ele que cuida desses detalhes para você.
A tendência é que esse xml se torne mais e mais detalhado a medida que os anos passarem, então, é bom usar estruturas apropriadas para trabalhar com XML desde o início.