2016-04-23 9 views
1

Parcelerのreadmeには、他のPOJOベースのライブラリ、特にSimpleXMLで使用できることが記載されています。Parcelerのreadmeに記載されているParcelerとSimpleXml

使用方法の例はありますか?

私は正常GSONとParcelerを使用しました:

Gson gson = new GsonBuilder().create(); 
ParcelerObj parcelerObj = gson.fromJson(jsonStr, ParcelerObj.class); 
String str = gson.toJson(parcelerObj); 

はしかし、私はどこのSimpleXMLで開始するか分かりません。

SensorLocation sl = new SensorLocation (10.1235, -36.1346, 10.124); 
Serializer s = new Persister(); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
s.write(sl, out); 

私は現在、奇妙な要件があります

@Root(name="point") 
@Order(attributes={"lat", "lon", " alt"}) 
public class SensorLocation { 
    @Attribute 
    private double lat; 

    @Attribute 
    private double lon; 

    @Attribute 
    private double alt; 

    public SensorLocation (
     @Attribute(name="lat") double lat, 
     @Attribute(name="lon") double lon, 
     @Attribute(name="alt") double alt 
    ) { 
     this.lat = lat; 
     this.lon = lon; 
     this.alt = alt; 
    } 
} 

は、このクラスには、次のコードを使用して、次のXML

<point lat="10.1235" lon="-36.1346" alt="10.124"/> 

にシリアライズすることができます。私は現在、次のSimpleXMLクラスを持っていますXMLの属性と要素を特定の順序で保持します。だから私は@Orderを使っている。

ParcelerはどのようにSimpleXMLで動作しますか? ParcelerのインスタンスをSerializer.write()に渡しますか?

誰かが私にリソースを指すことができれば、私自身の研究をすることができます。私はちょうど出発点を見つけることができませんでした。注目に

@Parcel 
@Root(name="point") 
@Order(attributes={"lat", "lon", " alt"}) 
public class SensorLocation { 
    @Attribute 
    private double lat; 

    @Attribute 
    private double lon; 

    @Attribute 
    private double alt; 

    @ParcelConstructor 
    public SensorLocation (
     @Attribute(name="lat") double lat, 
     @Attribute(name="lon") double lon, 
     @Attribute(name="alt") double alt 
    ) { 
     this.lat = lat; 
     this.lon = lon; 
     this.alt = alt; 
    } 
} 

ワース、Parcelerのこの構成はBeanのフィールドにアクセスするためにリフレクションを使用します。

答えて

1

は、ここでのSimpleXMLとParcelerの両方をサポートしていますあなたの豆の例です。非プライベートフィールドを使用すると、警告とわずかなパフォーマンスヒットを避けることができます。

使用法:

SensorLocation sl = new SensorLocation (10.1235, -36.1346, 10.124); 
Parcelable outgoingParcelable = Parceler.wrap(sl); 
//Add to intent, etc. 

//Read back in from incoming intent 
Parcelable incomingParcelable = ... 
SensorLocation sl = Parceler.unwrap(incomingParcelable); 
Serializer s = new Persister(); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
s.write(sl, out); 

Parcelerはあなたが望むものそれを行うのは自由です、あなたのBeanに任意のコードを導入していないため。

+1

うわー、素敵な、それはそれのような簡単なアプリケーションです! – Vadym

関連する問題