默认情况下,XStream 会不必要地转义>
,"
...等。
有没有办法禁用它(并且只有 escape <
, &
)?
这是默认 PrettyPrintWriter 的结果。就个人而言,我喜欢同时逃避 < 和 >。它使输出看起来更平衡。
如果您想要规范化的 XML 输出,您应该使用 Java 中提供的 C14N API。
如果流内容包括 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("]]>");
}
}
}
Cdata 对我不起作用,最后我必须使用 Apache StringUtils。
StringUtils.replaceEach(xml, new String[]{"<",""","'",">"}, new String[]{"<","\"","'",">"});
XStream 不自己编写 XML,它使用各种库(“驱动程序”?)来这样做。
只选一个不会的。该列表在他们的网站上。我猜它会默认使用 XOM。