質問

こうして作成しますXStreamインスタンスのためのXML:

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を無効にするには写印刷?

役に立ちましたか?

解決 2

何コミュニティから、私は行ったと言えるのでしょうか。

のためのXML おいていかなければなりますのでどserialize:

の線:

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コンストラクタを使用します。

他のヒント

おかげで、あなたの投稿が助けました!ここで私は文字列に変換するために使用するものです。

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

コンパクトライタとXStreamの上marschalメソッドを使用します。

xstream.marshal(someObject, new CompactWriter(out)); 

かなり印刷のデフォルトの動作は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());
    }
});

この方法であなたのXStreamのインスタンスを作成します:

XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
        public HierarchicalStreamWriter createWriter(Writer writer) {
            return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE, new JsonWriter.Format(new char[0], new char[0], 0));
        }
});

ここでFormatクラスのコンストラクタがあります:

/**
 * Create a new Formatter.
 * 
 * @param lineIndenter the characters used for indenting the line
 * @param newLine the characters used to create a new line
 * @param mode the flags for the format modes
 * @since 1.4
 */
public Format(char[] lineIndenter, char[] newLine, int mode) {
    this(lineIndenter, newLine, mode, new NoNameCoder());
}

詳細についてはJsonWriterのソースコードをチェックしてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top