Я пытаюсь сгенерировать класс из моего xsd с простым выбором, чтобы присутствовал один или оба элемента. Но jaxb не генерирует поля в моем классе, потому что у меня есть два элемента addressLine2.
Как я могу справиться с этим?
Вот мой xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test.com/document/distribution/soap/model"
xmlns:tns="http://test.com/document/distribution/soap/model"
elementFormDefault="qualified">
<complexType name="PostRecipient">
<sequence>
<element name="FirstName" type="string" minOccurs="0"/>
<element name="LastName" type="string" minOccurs="0"/>
<element name="CompanyName" type="string" minOccurs="0" />
<choice>
<sequence>
<element name="AddressLine1" type="string" />
<element name="AddressLine2" type="string" minOccurs="0" />
</sequence>
<element name="AddressLine2" type="string"/>
</choice>
<element name="City" type="string" />
<element name="StateCode" type="string" minOccurs="0" />
<element name="CountryCode" type="string" />
<element name="PostalCode" type="string" />
</sequence>
</complexType>
</schema>
Вот сгенерированный класс:
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlElementRefs;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PostRecipient", propOrder = {
"content"
})
public class PostRecipient {
@XmlElementRefs({
@XmlElementRef(name = "LastName", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "City", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "AddressLine1", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "CountryCode", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "PostalCode", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "FirstName", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "CompanyName", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "StateCode", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false),
@XmlElementRef(name = "AddressLine2", namespace = "http://test.com/document/distribution/soap/model", type = JAXBElement.class, required = false)
})
protected List<JAXBElement<String>> content;
public List<JAXBElement<String>> getContent() {
if (content == null) {
content = new ArrayList<JAXBElement<String>>();
}
return this.content;
}
}