如何禁用XStream中的漂亮打印(空白/换行符)?

Igo*_*orM 21 java xml json xstream

这是我为XML创建XStream实例的方法:

XStream xstream = new XStream();
Run Code Online (Sandbox Code Playgroud)

这适用于JSON:

private final XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
        public HierarchicalStreamWriter createWriter(Writer writer) {
            return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
        }
    });
Run Code Online (Sandbox Code Playgroud)

它们都是非常打印(缩进)输出.

如何让XStream禁用漂亮的打印?

noc*_*yto 19

谢谢,你的帖子帮了!!! 这是我用来转换为String的内容.

String strXML = "";
XStream xs = new XStream();
StringWriter sw = new StringWriter();
xs.marshal(this,  new CompactWriter(sw));
strXML = sw.toString();
Run Code Online (Sandbox Code Playgroud)


Igo*_*orM 12

在社区的帮助下,我找到了答案.

对于XML,您必须更改序列化的方式:

这条线:

xStream.toXML(o, new OutputStreamWriter(stream, encoding));
Run Code Online (Sandbox Code Playgroud)

变成了线

xStream.marshal(o, new CompactWriter(new OutputStreamWriter(stream, encoding)));
Run Code Online (Sandbox Code Playgroud)

对于JSON,您只需更改XStream的创建方式.因此,XStream的初始化更改为:

private final XStream xstreamOut = new XStream(new JsonHierarchicalStreamDriver() {
    public HierarchicalStreamWriter createWriter(Writer writer) {
        return new JsonWriter(writer, new char[0], "", JsonWriter.DROP_ROOT_MODE);
    }
});
Run Code Online (Sandbox Code Playgroud)

请注意,使用了4参数JsonWriter构造函数.