使用多个标记名选项将XML映射到Java
我需要解析一个XML文件,然后将其映射到一个Java对象。到目前为止,我是通过一个带注释的POJO实现的:使用多个标记名选项将XML映射到Java,java,jaxb,Java,Jaxb,我需要解析一个XML文件,然后将其映射到一个Java对象。到目前为止,我是通过一个带注释的POJO实现的: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = {"title", "id", "eventList"}) @XmlRootElement(name = "MyClass") public class MyClass { @XmlElement(name = "Title", required
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"title", "id", "eventList"})
@XmlRootElement(name = "MyClass")
public class MyClass {
@XmlElement(name = "Title", required = true)
protected String title;
@XmlElement(name = "Id", required = false)
protected String id;
@XmlElement(name = "EventList", required = true)
protected EventList eventList;
}
然后使用JAXB将其解组:
MyClass myObj = (MyClass) unmarshaller.unmarshal(new StreamSource(fis))
问题:有时,我的客户发送带有稍微不同的标记名的文件,例如,Eventlist而不是Eventlist
是否有允许标记同时使用两个名称的选项?到目前为止,我通过在POJO中提供两个属性来解决这个问题:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"title", "id", "eventList"})
@XmlRootElement(name = "MyClass")
public class MyClass {
@XmlElement(name = "Title", required = true)
protected String title;
@XmlElement(name = "Id", required = false)
protected String id;
@XmlElement(name = "EventList", required = false)
protected EventList eventList;
@XmlElement(name = "Eventlist", required = false)
protected EventList eventlist;
}
这很难维护,并且禁止我使用“required”属性。您有更好的解决方案吗?我不确定是否有添加多个名称的选项,但您可以做的是: 将字段设置为私有,并为其添加getter和setter。您可以为eventlist字段创建两个getter和setter,并使用不同的名称对它们进行注释。正如我所见,由于该字段不是必需的,因此不会有任何问题 尽管。。正如我现在看到的,这个问题实际上已经解决了。请看这里: