XStream по умолчанию излишне выходит >
,"
... и т.д.
Есть ли способ отключить это (и только выйти <
, &
)?
Это результат работы PrettyPrintWriter по умолчанию. Лично мне нравится избегать обоих <и>. Это делает вывод более сбалансированным.
Если вам нужен канонический XML-вывод, вам следует использовать C14N API, предоставляемый в Java.
Если потоковый контент включает XML, CDATA - лучший вариант. Вот как я это сделал:
XStream xstream = new XStream(
new DomDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new MyWriter(out);}});
String xml = xstream.toXML(myObj);
......
public class MyWriter extends PrettyPrintWriter {
public MyWriter(Writer writer) {
super(writer);
}
protected void writeText(QuickWriter writer, String text) {
if (text.indexOf('<') < 0) {
writer.write(text);
}
else {
writer.write("<[CDATA["); writer.write(text); writer.write("]]>");
}
}
}
XStream не пишет XML сам по себе, он использует для этого различные библиотеки («драйверы»?).
Просто выберите тот, которого нет. Список есть на их сайте. Думаю, по умолчанию он будет использовать XOM.