使用JAXB编组解组Java超类和子类

使用JAXB编组解组Java超类和子类,第1张

使用JAXB编组/解组Java超类和子类

谢谢各位的意见。我使用了所有答案的反馈,但最终都是有效的结合了这就是为什么我为将来可能遇到此问题的任何人创建单独的答案。

为了使它起作用,我必须确保在marhsalled /
unmarshalled的super和sub类中的所有getter方法都用标注

@XmlElement
。这将确定相应变量的XML标签

@XmlElement (name = "OwnerID")    public int getOwnerId()    {        return ownerId;    }

必须对超类进行注释

@XmlSeeAlso
以将子类绑定到它。即在我的代码中
RoadVehicle
是超类,并且
Car
Van
类都对其进行了扩展。

@XmlSeeAlso({Car.class, Van.class})public class Vehicle{

现在使用超级类和子类进行注释,唯一需要注释的其他类是列表类(在我的代码中为车库)。此处的更改将确定填充了哪些XML标签。

通过将

@XmlRootElement
注释应用于类的顶部来设置XML根标签。即“车辆”将是我的示例中的根XML标签。

@XmlRootElement(name = "Vehicle")public class Garage{

最后,

@XmlElements
必须
@XmlElements
为每个需要XML标签的子类声明一个带有注释的列表,并
name
提供XML标签的名称。必须在该集合的getter方法上方声明此列表。

@XmlElements    ({        @XmlElement(name = "Car", type = Car.class, required = false),        @XmlElement(name = "Van", type = Van.class, required = false)    })        public List<Vehicle> getListOfVehicles()    {        return vehicleCollection;    }


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5505579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存