[英]How to marshal / unmarshal different xml from the same object model
我是JAXB的新手,希望能有所幫助。
首先,讓我給您一些背景知識。
我有一個基於2個主要類的相對簡單的對象模型:提供者和產品。 現在,提供者引用了他可以提供的產品列表,而產品引用了可以提供該產品的提供者列表。 也就是說,我有循環引用!
產品被構建為復合模式,因為:a)我不想受到“類別”,“類型”,...的限制,而是希望創建盡可能靈活的產品樹。 b)我想通過同一界面管理產品和樹元素(所謂的“類別”)。
眾所周知,同一個抽象產品可以具有許多不同的“物理實現”(例如:汽車是抽象產品,而豐田Yaris是物理產品)。 因此,為了分離產品的抽象和物理實現,我實現了橋接模式。 現在,抽象產品為ProductTemplate(上述組合),而物理產品為ProductImplementation。
我設法使用Hibernate(和Spring)對此建模。
現在,我想生成XML字符串以使后端和前端對話。
目前,我正在對JAXB進行一些研究,看它是否可以滿足我的需求:
但是,這只是我需要的一方面。 我還希望能夠從同一類中生成不同版本的XML字符串。 例如,從Provider對象中,我希望能夠封送包含以下內容的XML:
全部財產,即我在BD中關於他的一切。
目前,我已經能夠使用JAXB注釋來封送ProductTemplate,因為我已經在Provider類中將它們注釋為XmlTransient。 這還不夠好!
我現在不要求提供有關代碼的詳細說明。 我要問的是:
自從我發布此問題已有一段時間以來,我在Blaise Doughan的博客和MOXy網站中找到了答案。
我沒有太多時間來詳細說明,但是訣竅是使用綁定文件。 您可能需要與一個單獨的類相關的任意數量的綁定文件。 您只需要將其鏈接到您的JAXBContext。
我發現它不容易使用,但是在用Cyclokk引用編組類時很方便。
希望能有所幫助,並希望有一天我有時間詳細解釋:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.