簡體   English   中英

jaxb java類到多個xml映射

[英]jaxb java class to multiple xml mappings

我有幾個Java類,希望使用jaxb轉換為xml。 (我不需要基於架構生成類)我需要能夠將類映射到不同的xml格式,所以我不想使用注釋。 從我所看到的,我最好的選擇似乎是使用外部xml綁定。 所以我想知道:

1)我正在使用日食。 我是JAXB的新手,我想知道如何使用eclipse集成外部綁定?

2)除了外部xml綁定以外,還有哪些其他選項可用?

我認為您最好的選擇是使用MOXy XML綁定:

這允許您以XML文件而不是注釋的形式定義XML <-> Java映射:

<?xml version="1.0" encoding="US-ASCII"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="example">

    <java-types>
        <java-type name="Customer">
            <xml-root-element name="customer-info" />
            <java-attributes>
                <xml-attribute java-attribute="custId" name="customer-id" />
                <xml-element java-attribute="picture" name="picture-hex">
                    <xml-schema-type name="hexBinary" />
                    <xml-java-type-adapter
                        value="example.adapters.MyHexConverter" />
                </xml-element>
            </java-attributes>
        </java-type>
    </java-types>

</xml-bindings>

您可以通過JAXBContextProperties.OXM_METADATA_SOURCE屬性使用此文件:

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, iStream);

JAXBContext ctx = JAXBContext.newInstance(new Class[] { Customer.class }, properties);

因此,如果您希望為同一類提供多個不同的映射,則只需編寫幾個XML綁定並使用相應的文件創建JAXBContext 我認為這是使用MOXy的最佳選擇

使用純JAXB RI,您可以編寫自己的注釋閱讀器。 我曾經和Annox一起做過一次:

另一個選擇是JBoss JAXBIntroductions,它也基於自定義注釋閱讀器:

但是我不確定這是否會繼續存在。

由於您需要多個映射,因此您必須手動編寫它們(除一個以外的所有映射)。 您可以生成一組映射作為注釋,但是進一步的映射將必須手動編寫。 或者說,我不知道會生成例如MOXy XML綁定的插件或工具。 雖然寫一個不是大問題。

您也可以采用完全不同的方法。 您可以將單獨的DTO包映射到這些格式,而不是使用不同的映射/格式映射一個中心模型。 然后在您的DTO和中央模型之間轉換。 就像是

XML(1) <-> DTO(1)|<-\
XML(2) <-> DTO(2)|<--*->Model
XML(3) <-> DTO(3)|<-/

這樣,您將獲得每種交換格式的干凈的DTO(可以從模式中生成)和單個中央業務模型(將它們全部統治)。 您必須在DTO和模型之間進行轉換,這可以使用Dozer之類的工具進行處理。

是否采用這種方法更好,取決於格式的復雜程度以及彼此之間的差異。

關於您的問題:

1)Eclipse沒什么特別的,只需添加MOXy作為依賴項並遵循文檔即可。
2)我已經在上面描述了一些選項。

  1. 請參閱此處的“將自定義文件傳遞給JAXB綁定編譯器”: https : //docs.oracle.com/javase/tutorial/jaxb/intro/custom.html

您可以編寫一個腳本以集成到Eclipse中。 或者,您可以使用Maven或Ant任務。

  1. 您唯一的選擇是注釋或XML綁定。

暫無
暫無

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

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