我有像这样的Xml
<entry>
<comboBox>
<name>xxx</name>
<details>sdfd</details>
</comboBox>
</entry>
在另一个条目中我有这样的XML
<entry>
<numberField>
<name>xxx</name>
<details>sdfd</details>
</numberField>
</entry>
我想将comboBox
和numberField
映射到Java中名为Field的同一个类
如何在Entry Class中注释Java字段?
答案 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(数字字段或组合框)