7

默认情况下,XStream 会不必要地转义>" ...等。

有没有办法禁用它(并且只有 escape <, &)?

4

3 回答 3

7

这是默认 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("]]>"); 
        }
    }
}
于 2010-05-23T12:07:35.967 回答
1

Cdata 对我不起作用,最后我必须使用 Apache StringUtils。

StringUtils.replaceEach(xml, new String[]{"&lt;","&quot;","&apos;","&gt;"}, new String[]{"<","\"","'",">"});
于 2016-03-29T13:04:38.527 回答
0

XStream 不自己编写 XML,它使用各种库(“驱动程序”?)来这样做。

只选一个不会的。该列表在他们的网站上。我猜它会默认使用 XOM。

于 2010-05-23T10:56:11.007 回答