谢谢各位的意见。我使用了所有答案的反馈,但最终都是有效的结合了这就是为什么我为将来可能遇到此问题的任何人创建单独的答案。
为了使它起作用,我必须确保在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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)