21

これは、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 に依頼するにはどうすればよいですか?

4

6 に答える 6

19

ありがとう、あなたの投稿は役に立ちました!!! これが私が文字列に変換するために使用するものです。

String strXML = "";
XStream xs = new XStream();
StringWriter sw = new StringWriter();
xs.marshal(this,  new CompactWriter(sw));
strXML = sw.toString();
于 2009-08-17T19:14:14.500 に答える
4

コンパクト ライターを使用して xstream でマーシャル メソッドを使用する

xstream.marshal(someObject, new CompactWriter(out)); 
于 2009-05-21T19:23:45.563 に答える
3

pretty-printing のデフォルトの動作は、AbstractXmlDriver.createWriter() メソッドに由来します (XStream はデフォルトの階層ストリーム ドライバーとして XppDriver を使用し、これは AbstractXmlDriver を拡張します)。

public HierarchicalStreamWriter createWriter(Writer out) {
    return new PrettyPrintWriter(out, getNameCoder());
}

きれいな印刷をグローバルに無効にして (他のすべてのデフォルトの動作を保持しながら)、ここで提案されている使用ごとの他のオプションをいじるのではなく、単純な toXML(o) メソッドを使用するだけの場合は、次のように XStream インスタンスを初期化できます。これは、上記のメソッドを代わりに CompactWriter でオーバーライドします。

XStream xstream = new XStream(new XppDriver() {
    @Override
    public HierarchicalStreamWriter createWriter(Writer out) {
        return new CompactWriter(out, getNameCoder());
    }
});
于 2015-02-13T14:05:29.923 に答える