cData com xstream

2 respostas
phillip.tessuto

Pessoal,

Tenho uma duvida.
Gostaria de inserir um cData em um dos meus campos do xml…
Porém não sei como fazer isto. Estou utilizando o xStream…
Alguém tem alguma resposta…

Fico agradecido…

2 Respostas

P

Para usar CDATA você precisa modificar o formatador. Uma possibilidade é:

class CompactCdataWriter extends CompactWriter { public CompactCdataWriter(Writer writer) { super(writer); } @Override protected void writeText(QuickWriter writer, String text) { if (useCdata(text)) { writer.write("<[CDATA["); writer.write(text); writer.write("]]>"); } else { super.writeText(writer, text); } } private boolean useCdata(String text) { if (text.indexOf("]]>") < 0) { for (int i = 0; i < text.length(); i++) { switch (text.charAt(i)) { case '<': case '>': case '&': case '"': case '\'': case '\r': return true; } } } return false; } }
e entao

XStream xStream = new XStream(
            new XppDriver() {
                public HierarchicalStreamWriter createWriter(Writer out) {
                    return new CompactCdataWriter(out);
                }
            }
        );
        System.out.println(xStream.toXML("teste"));
        System.out.println(xStream.toXML("<teste/>"));
P

Ops! Pequena correção: o código da linha 8 deve ser substituido por

Criado 16 de junho de 2010
Ultima resposta 6 de mar. de 2011
Respostas 2
Participantes 2