2013-10-31 45 views
0

我把这个xml格式作为不同http请求的输出。将类的类型绑定到元素的动态方式

<transaction> 
<respmsg>...</respmsg> 
<respcode>0000</respcode> 
<status>success</status> 
</transaction> 

下面是我的交易类表示

@root 
class Transaction { 
    @Element 
    public ResponseMessage respmsg; 
    @Element 
    public int respcode; 
    @Element 
    public String status; 
} 

的 “respmsg” 属性

abstract class ResponseMessage { 

} 

的抽象类,表示这是相当容易的映射到一个类的对象。然而“respmsg”是用于登录请求每个请求 不同的respmsg可能是

<respmsg> 
    <firstname>John</firstname> 
    <lastname>Doe</lastname> 
    <mobilephone>1234</mobilephone> 
    <email>[email protected]</email> 
</respmsg> 


class LoginResponseMessage extends ResponseMessage { 
    @Element 
    public String firstname; 

    @Element 
    public String lastname; 

    @Element 
    public String mobilephone; 

    @Element 
    public String email; 
} 

和位置要求可能是

<respmsg> 
    <address1>121 121 UAE Bldg, dubai</address1> 
    <address2/> 
    <city>Dubai</city> 
    <postalcode>121</postalcode> 
    <region>dubai</region> 
</respmsg> 

class LocationResponseMessage extends ResponseMessage { 
    @Element 
    public String address1; 

    @Element 
    public String address2; 

    @Element 
    public String postalcode; 

    @Element 
    public String region; 
} 

如何设计我的类,以便它知道什么类型在解序列化过程中用于respmsg的类?

String xmlData = retrieve(urls[0]); //retrieve fetches the string xml from the http request 
Serializer serializer = new Persister(); 
Reader reader = new StringReader(xmlData); 
Transaction t = serializer.read(Transaction.class, reader, false); 
+0

什么添加属性到''说明标签哪种类型是? – azz

+0

例如:'' – azz

+0

Hi Der Flatulaor感谢您的评论。是的,我确实从String xmlData向插入了一个属性。 String xmlData = retrieve(urls [0]); int respmsgIndex = xmlData.indexOf(“”); xmlData = xmlData.replaceFirst(“”,“”); 谢谢你的帮助。如果可以的话,我会将你的评论标记为答案。非常感激! – Lian

回答

0

按照要求,发布我的评论作为一个答案:


有关添加属性的<respmsg>标签,说明该类型是什么?

例如:

​​
相关问题