XML映射到Java对象

时间:2018-01-07 21:15:37

标签: java xml jaxb

我有像这样的Xml

<entry>
  <comboBox>
    <name>xxx</name>
    <details>sdfd</details>
  </comboBox>
</entry>

在另一个条目中我有这样的XML

<entry>
  <numberField>
    <name>xxx</name>
    <details>sdfd</details>
  </numberField>
</entry>

我想将comboBoxnumberField映射到Java中名为Field的同一个类

如何在Entry Class中注释Java字段?

2 个答案:

答案 0 :(得分:2)

Entry类中,您需要使用注释Java字段 @XmlElements 并列出那里的各个元素名称。像这样:

@XmlAccessorType(XmlAccessType.FIELD)
public class Entry {

    @XmlElements({
        @XmlElement(name = "comboBox", type = Field.class),
        @XmlElement(name = "numberField", type = Field.class)
    })
    private Field field;
}

为了清楚起见,我在上面的注释中添加了type = Field.class。 在您的情况下,您可以省略它。然后JAXB将从属性类型decaration中获取Field,这具有相同的预期效果。

Field类可以像这样直截了当:

@XmlAccessorType(XmlAccessType.FIELD)
public class Field {

    @XmlElement
    private String name;

    @XmlElement
    private String details;
}

答案 1 :(得分:0)

我认为你应该创建一个具有公共注释字段的对象的两个子类。 每个子类只需要定义jaxb @XmlRootElement(数字字段或组合框)