2013-10-31 4 views
0

다른 http 요청의 출력으로이 XML 형식을 사용합니다.요소에 클래스 유형을 동적으로 바인딩하는 방법

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

다음은이 클래스 객체에 매핑 할 매우 쉽게 내 트랜잭션 클래스 표현 "respmsg"속성

abstract class ResponseMessage { 

} 

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

추상 클래스 표현입니다. 그러나 "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; 
} 

수 있습니다 로그인 요청에 대한 모든 요청 다릅니다 desserialization 동안 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

안녕하세요, Der Flatulaor 님의 의견에 감사드립니다. 예, 실제로 String xmlData에서 에 속성을 삽입합니다. String xmlData = retrieve (urls [0]); int respmsgIndex = xmlData.indexOf (""); xmlData = xmlData.replaceFirst ("", ""); 도움 주셔서 감사합니다. 내가 할 수 있다면 대답으로 당신의 의견을 표시했을 것입니다. 매우 감사! – Lian

답변

0

요청으로, 답변으로 내 코멘트를 게시 :


무엇인가 입력되는 알리는 <respmsg> 태그에 속성을 추가하는 방법에 대한? 예를 들어

:

<respmsg type="LocationResponseMessage">