有十几种不同的种类.我正在使用注释来映射到看起来像这样的java类:
@XmlRootElement(name="inventory")
public class Inventory {
@XmlElement(name="item")
public List
如何让JAXB根据“kind”字段创建子类Item对象?
最佳答案
有几种不同的方法:
JAXB(JSR-222)
以下方法适用于任何JAXB实现(Metro,MOXy,JaxMe等).使用XmlAdapter,其中适配对象包含父类和所有子类的属性.在XmlAdapter中添加应该使用特定子类的逻辑.有关示例,请参阅以下类似问题的链接:
> Java/JAXB: Unmarshall XML attributes to specific Java object attributes
EclipseLink JAXB(MOXy)
您可以使用EclipseLink JAXB (MOXy)中的@XmlDescriminatorNode扩展来处理此用例.
看看我对类似问题的回答:
> Java/JAXB: Unmarshall Xml to specific subclass based on an attribute
我们在EclipseLink 2.2版本中改进了这种支持:
> http://bdoughan.blogspot.com/2010/11/jaxb-and-inheritance-moxy-extension.html