簡體   English   中英

如何從同一對象模型封送/解組不同的xml

[英]How to marshal / unmarshal different xml from the same object model

我是JAXB的新手,希望能有所幫助。

首先,讓我給您一些背景知識。

  1. 我有一個基於2個主要類的相對簡單的對象模型:提供者和產品。 現在,提供者引用了他可以提供的產品列表,而產品引用了可以提供該產品的提供者列表。 也就是說,我有循環引用!

  2. 產品被構建為復合模式,因為:a)我不想受到“類別”,“類型”,...的限制,而是希望創建盡可能靈活的產品樹。 b)我想通過同一界面管理產品和樹元素(所謂的“類別”)。

  3. 眾所周知,同一個抽象產品可以具有許多不同的“物理實現”(例如:汽車是抽象產品,而豐田Yaris是物理產品)。 因此,為了分離產品的抽象和物理實現,我實現了橋接模式。 現在,抽象產品為ProductTemplate(上述組合),而物理產品為ProductImplementation。

我設法使用Hibernate(和Spring)對此建模。

現在,我想生成XML字符串以使后端和前端對話。

目前,我正在對JAXB進行一些研究,看它是否可以滿足我的需求:

  1. 我想封送一個Provider,及其所有ProductTemplate的列表
  2. 我想封送一個ProductTemplate及其所有提供者的列表

但是,這只是我需要的一方面。 我還希望能夠從同一類中生成不同版本的XML字符串。 例如,從Provider對象中,我希望能夠封送包含以下內容的XML:

  • 僅其基本信息(名稱,地址等)
  • 擴展信息(最后衍生的產品,最后交貨日期)
  • 全部財產,即我在BD中關於他的一切。

    目前,我已經能夠使用JAXB注釋來封送ProductTemplate,因為我已經在Provider類中將它們注釋為XmlTransient。 這還不夠好!

我現在不要求提供有關代碼的詳細說明。 我要問的是:

自從我發布此問題已有一段時間以來,我在Blaise Doughan的博客和MOXy網站中找到了答案。

我沒有太多時間來詳細說明,但是訣竅是使用綁定文件。 您可能需要與一個單獨的類相關的任意數量的綁定文件。 您只需要將其鏈接到您的JAXBContext。

我發現它不容易使用,但是在用Cyclokk引用編組類時很方便。

希望能有所幫助,並希望有一天我有時間詳細解釋:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM