我必須生成一個xml元素,它可以具有任何「原始類型」(xsd:string,xsd:boolean等)的值。例子:JAXB - 僅爲元素的特定子類型設置XmlAdapter?
<field xsi:type="xsd:string" name="aString">String Value</field>
<field xsi:type="xsd:dateTime" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
...
所以,我用這個實現,使JAXB決定基本類型的xsi:type
:
public class Field {
@XmlAttribute
private String name;
@XmlElement
Object value;
}
,它是按預期工作,但所有的java.util.Date得到類型xs:dateTime
...
現在我想改變編組的行爲,只有當「值」目的是要獲得這樣的領域java.util.Date的實例:
<field xsi:type="xsd:date" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
所以我創建一個適配器,但如果我試試這個:
@XmlElement
@XmlJavaTypeAdapter(DateAdapter.class)
Object value;
的適配器必須處理一個java.lang.Object繼承型
public class DateAdapter extends XmlAdapter<String, Object> {...}
但我不想失去的所有其他對象的JAXB marshallers(Integer,Double等)...
有一種方法可以爲元素的特定子類型設置適配器嗎?
您是否找到任何解決方案? – nhylated
沒有......我有一個適配器,它處理Object類並在內部管理每個子類型。不是「好」,但它的工作原理。 – ggarciao