默认情况下,XStream不必要地转义>
,"
......等等。
有没有办法禁用此功能(并且只能转义<
,&
)?
答案 0 :(得分:7)
这是默认的PrettyPrintWriter的结果。就个人而言,我喜欢逃避两个&lt;和&gt;。它使输出看起来更平衡。
如果您想要规范化的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("]]>");
}
}
}
答案 1 :(得分:1)
Cdata对我不起作用, 最后,我必须使用Apache StringUtils。
StringUtils.replaceEach(xml, new String[]{"<",""","'",">"}, new String[]{"<","\"","'",">"});
答案 2 :(得分:0)
XStream不会自己编写XML,它使用各种库(“驱动程序”?)来执行此操作。
选择一个没有的。该列表在他们的网站上。我想它默认会使用XOM。