原文地址:[https://jaxb.java.net/tutorial/section_6_2_7_1-Annotations-for-Fields.html#The Annotation XmlElement](https://jaxb.java.net/tutorial/section_6_2_7_1-Annotations-for-Fields.html#The Annotation XmlElement)
对一个field来说,最基本的注解就是@XmlElement
。它表示这个field将在XML中被转成一个element。它允许你定义XML的name,namespace,还有它是否是可选的(optional)或者是可为空的(nillable),默认值,Java类。这里是两个被注解的field,下面是对应的schema片段:
@XmlElement(name = "Preamble", required = true)
protected PreambleType preamble;
@XmlElement(name = "Workplace", required = true)
protected List<SysWorkplaceType> workplace;
<xsd:sequence>
<xsd:element name="Preamble" type="com:PreambleType"/>
<xsd:element name="Workplace" type="SysWorkplaceType"
minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
如果一个field有一些collection类型,那么将不得不将超过一个@XmlElement
的注解关联这个field。这需要这些注解被组装到一个@XmlElements
注解,而它只是作为一个容器。在下面这个class定义中,它的entryOrChoiceOrCascade
field是一个collection,其中包含了三个不同类的对象。
@XmlType(name = "MenuType")
public class MenuType extends ItemType {
@XmlElements({
@XmlElement(name = "Item", type = ItemType.class),
@XmlElement(name = "CheckBox", type = CheckBoxType.class),
@XmlElement(name = "Menu", type = MenuType.class)
})
protected List entryList;
}
你应该为list element避免使用复杂的名字。
网友评论