2009-10-17 29 views
1

甚至可以將根對象與超級域綁定?JiBX綁定 - 根對象擴展了一個對象

我有相當複雜的實體(實體)綁定。我已經失去了它:)

這是我的代碼的情況:

public class CoreRestWrapper { 
    private Integer page; 
    private Integer perPage; 
} 

public class UserWrapper extends CoreRestWrapper { 
    private Collection<UserCVO> users; 
} 

public class UserCVO { 
    private UserVO userVO; 
    private Map<String, UserMeta> meta; 
} 

public class UserVO extends BaseVO { 
    //nothing here 
} 

public class BaseVO { 
    private Integer id; 
    private String mainName; 
} 

public class UserMeta extends Meta { 
    //nothing here 
} 

public class Meta { 
    private String key; 
    private Object value; 
    private String type; //String, Integer, Boolean, Date 
} 

UserWrapper是我的根對象。我想有我響應XML是這樣的:

<users> 
    <page>1</page> 
    <perPage>2</perPage> 
    <user> 
     <id>1</id> 
     <main>test</main> 
     <meta type="String" key="wtf">just for fun</meta> 
     <meta type="Integer" key="age">99</meta> 
    </user> 
    <user> 
     <id>2</id> 
     <main>test</main> 
     <meta type="String" key="wtf">fooooo</meta> 
     <meta type="Integer" key="age">101</meta> 
    </user> 
</users> 

,或者甚至<users page="1" perPage="2">,然後就用戶標籤...

這甚至可能(在JiBX的初學者處理)?

回答

1

您可以,但您必須爲層次結構中的所有內容定義映射。我遇到了同樣的事情。它結束了足夠的複雜,我發現創建映射到的JIBX包裝器對象(例如UserJibxWrapper)更簡單,然後編寫一些代碼將其映射到內部對象中。

就你而言,對象本身相當簡單,所以你可能能夠生成所有需要的映射。我會自上而下。獲取基類並映射它,獲得該映射的工作,然後添加一個子類並根據需要更改映射,並繼續以這種方式工作。由於JIBX需要知道層次結構中要映射的所有內容,因此自上而下映射比自下而上更容易。

+0

我的確和你寫的一樣。我只需要兩天的時間來計算JiBX映射綁定和服裝編組。是的 - 我的問題是我開始自下而上,這就是爲什麼我迷路了:) – Trick 2009-10-20 09:40:29

+0

祝賀:)。這當然不容易,但是一旦你在映射中學到了一些奇怪的東西,這是處理XML到對象轉換的一種非常好的方式。在某些方面,它讓我想起了創建Hibernate映射的學習曲線。 – 2009-10-20 17:45:35