gga*_*iao 6 xml jaxb xml-serialization
我必须生成一个xml元素,它可以具有任何"基本类型"(xsd:string,xsd:boolean等)作为值.例子:
<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>
...
Run Code Online (Sandbox Code Playgroud)
所以,我使用这个实现使JAXB决定xsi:type原始类型:
public class Field {
@XmlAttribute
private String name;
@XmlElement
Object value;
}
Run Code Online (Sandbox Code Playgroud)
并且它按预期工作但所有java.util.Date获取类型xs:dateTime...
现在我只想在'value'对象是java.util.Date的一个实例时才改变marshaller的行为来获取这样的字段:
<field xsi:type="xsd:date" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个适配器,但如果我尝试这个:
@XmlElement
@XmlJavaTypeAdapter(DateAdapter.class)
Object value;
Run Code Online (Sandbox Code Playgroud)
适配器必须处理java.lang.Object类型
public class DateAdapter extends XmlAdapter<String, Object> {...}
Run Code Online (Sandbox Code Playgroud)
但我不想为所有其他对象(整数,双等)松散JAXB marshallers ...
有一种方法可以为元素的特定子类型设置适配器吗?
far*_*992 -1
尝试
http://jaxb.java.net/guide/Mapping_interfaces.html#Use__XmlJavaTypeAdapter
用于具有多种实现的接口的 XmlJavaTypeAdapter
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |