Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个标记名选项将XML映射到Java_Java_Jaxb - Fatal编程技术网

使用多个标记名选项将XML映射到Java

使用多个标记名选项将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

我需要解析一个XML文件,然后将其映射到一个Java对象。到目前为止,我是通过一个带注释的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 = 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,并使用不同的名称对它们进行注释。正如我所见,由于该字段不是必需的,因此不会有任何问题

尽管。。正如我现在看到的,这个问题实际上已经解决了。请看这里: