У меня небольшая проблема с кодом, сгенерированным из XJ C из моей схемы. У меня есть следующая схема:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<!-- Root Transport type must be an anonymous type for XJC to properly generate
the Java code to represent the transport message -->
<xsd:element name="transport">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TransactionHeader" type="TransactionHeader" minOccurs="1"/>
<xsd:element name="TransactionBody" type="TransactionBody" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="TransactionHeader">
<xsd:annotation>
<xsd:documentation>Standard Transaction Header for all transactions</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="dsCorrelationID" type="xsd:string"/>
<xsd:element name="applicationCorrelationID" type="xsd:string" minOccurs="0"/>
<xsd:element name="TNID" type="xsd:string" minOccurs="0"/>
<xsd:element name="sender" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TransactionBody">
<xsd:sequence>
<xsd:element name="payload" type="payload" maxOccurs="unbounded">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="payload">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="NetworkHeader" type="NetworkHeader"/>
<xsd:element name="NetworkActivity" type="NetworkActivity"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="NetworkHeader">
<xsd:sequence>
<xsd:element name="projectNumber" type="xsd:string" minOccurs="0"/>
<xsd:element name="projectDescription" type="xsd:string" minOccurs="0"/>
<xsd:element name="projectCreatedBy" type="xsd:string" minOccurs="0"/>
<xsd:element name="projectCreatedOn" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NetworkActivity">
<xsd:sequence>
<xsd:element name="networkHeaderNumber" type="xsd:string" minOccurs="0"/>
<xsd:element name="networkHeaderCompanyCode" type="xsd:string" minOccurs="0"/>
<xsd:element name="networkHeaderCompanyCodeDescription" type="xsd:string" minOccurs="0"/>
<xsd:element name="networkHeaderBusinessArea" type="xsd:string" minOccurs="0"/>
<xsd:element name="networkHeaderBusinessAreaDescription" type="xsd:string" minOccurs="0"/>
<xsd:element name="networkHeaderPlant" type="xsd:string" minOccurs="0"/>
<xsd:element name="networkHeaderPlantDescription" type="xsd:string" minOccurs="0"/>
<xsd:element name="networkActivityNumber" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
Мой тип «полезной нагрузки» содержит неограниченный список сложных типов в любом порядке. Когда я запускаю XJ C для этого XSD-файла, я получаю следующий Java код:
<code>@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "payload", propOrder = {
"networkHeaderOrNetworkActivity"
public class Payload {
@XmlElements({
@XmlElement(name = "NetworkHeader", type = NetworkHeader.class),
@XmlElement(name = "NetworkActivity", type = NetworkActivity.class)
})
protected List<Object> networkHeaderOrNetworkActivity;
/**
* Gets the value of the networkHeaderOrNetworkActivity 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 networkHeaderOrNetworkActivity property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getNetworkHeaderOrNetworkActivity().add(newItem);
*
* * *
* В списке разрешены объекты следующих типов * {@linklink NetworkHeader} * {@link NetworkActivity} * * * / publi c Список getNetworkHeaderOrNetworkActivity () {if (networkHeaderOrNetworkActivity == null) {networkHeaderOrNetworkActivity = new ArrayList (); } return this.networkHeaderOrNetworkActivity; }
Как видите, XJ C генерирует поле с именем "networkHeaderOrNetworkActivity". Я бы очень хотел изменить это имя. Окончательная схема будет содержать много разных полезных нагрузок со многими различными типами в дополнение к показанным здесь NetworkHeader и NetworkActivity.
Можно ли как-нибудь получить XJ C для генерации другого имени для этого поля из XSD ?
Я пытался поиграться с xsd: annotation, но это, похоже, не дало результата. Ничто иное, что я пробовал, тоже не сработало.