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…
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…
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/>"));
Ops! Pequena correção: o código da linha 8 deve ser substituido por