У меня есть xsd, который выглядит так (фрагмент):
<xs:complexType name="IDType">
<xs:choice minOccurs="1" maxOccurs="2">
<xs:element name="FileID" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="IDNumber1" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="Number" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="PNumber" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="SS" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="Player" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="Prior" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="BIN" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="Mutual" minOccurs="0" maxOccurs="1" type="an..35" />
</xs:choice>
</xs:complexType>
<xs:simpleType name="an..35">
<xs:restriction base="an">
<xs:maxLength value="35" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="an">
<xs:restriction base="xs:string">
<xs:pattern value="[ !-~]*" />
</xs:restriction>
</xs:simpleType>
По какой-то причине генерируется код Java:
<code>@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "IDType", propOrder = {
"fileID"
})
public class PatientIDType {
@XmlElementRefs({
@XmlElementRef(name = "FileED", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "IDNumber1", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "Number", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "PNumber", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "SS", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "Plaer", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "Prior", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "BIN", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class),
@XmlElementRef(name = "Mutual", namespace = "http://www.surescripts.com/messaging", type = JAXBElement.class)
})
protected List<JAXBElement<String>> fileID;
/**
* Gets the value of the fileID property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the fileID property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getFileID().add(newItem);
*
*
*
*
* Объекты следующих типов разрешены в списке
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* {@link JAXBElement} {@ code <} {@ link String} {@ code>}
* /
открытый список > getFileID () {
if (fileID == null) {
fileID = new ArrayList > ();
}
вернуть this.fileID;
}
Почему класс генерируется так, а не просто как строковый массив? Я действительно не хочу создавать JAXBElements каждый раз, когда я хочу что-то создать?
Как он может генерировать классы для каждого из типов, которые просто представляют строку или что-то в этом роде?
Заранее спасибо,
Ian