2012-03-22 10 views
1

私はこのような出力を取得したい:XStreamの、

<MyObj>field value</MyObj> 

次は、オブジェクトをフォーマットするためのJavaコードであり、このmyobj 、私はxmlにファイルを隠したいが、フィールド値を表示したい。

public class MyObj { 
    private String filed; 

    public String getField() { 
     return filed; 
    } 

    public void setField(String value) { 
     this.filed = value; 
    } 

    public static void main(String[] args) 
    { 
     XStream xstream = new XStream(new DomDriver("UTF-8")); 
     MyObj obj = new MyObj(); 
     obj.setField("field value"); 
     xstream.toXML(obj, System.out); 
    } 
} 

しかし、出力は次のとおりです。

<MyObj> 
    <filed>field value</filed> 
</MyObj> 

答えて

3

それは不可能ではありません。しかし、覚えておいてください:これは、通常は複数のフィールドを含むbeanに作用するxstreamライブラリの哲学と一致しません。

あなたはToAttributedValueConverter.class

@XStreamConverter(value=ToAttributedValueConverter.class, strings={"filed"}) 

クラス宣言の前に、このアノテーションを使用を使用することができます。私の意見で

、より良いはこのように、何か他のものを使用している:

<MyObj filed="field value" /> 

XMLのこのフォームは注釈が

例コード@XStreamAsAttribute使用して行うことができます。

public class MyObj { 
    @XStreamAsAttribute 
    private String filed; 

    public String getField() { 
     return filed; 
    } 

    public void setField(String value) { 
     this.filed = value; 
    } 

    public static void main(String[] args) 
    { 
     XStream xstream = new XStream(new DomDriver("UTF-8")); 
     MyObj obj = new MyObj(); 
     obj.setField("field value"); 
     xstream.toXML(obj, System.out); 
    } 
} 

このソリューションの利点は、将来的に1つのフィールドよりも多くのフィールドを追加する必要があるときにxmlフォーマットを変更する必要がないことです。

このソリューションはコンバータが不要なため、これも高速です。

関連する問題