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

2022-09-02 01:05:20

以下是我为 XML 创建 XStream 实例的方式:

XStream xstream = new XStream();

这是针对 JSON 的:

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

它们都是漂亮的打印(缩进)输出。

如何要求 XStream 禁用漂亮的打印?


答案 1

谢谢,您的帖子有所帮助!!!以下是我用来转换为字符串的内容。

String strXML = "";
XStream xs = new XStream();
StringWriter sw = new StringWriter();
xs.marshal(this,  new CompactWriter(sw));
strXML = sw.toString();

答案 2

在社区的一些帮助下,我找到了答案。

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

该行:

xStream.toXML(o, new OutputStreamWriter(stream, encoding));

更改为行

xStream.marshal(o, new CompactWriter(new OutputStreamWriter(stream, encoding)));

对于 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);
    }
});

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