Я не уверен, что именно вы ищете, но это должно быть одно из следующего:
- вы либо хотите упростить имя сгенерированного поля, чтобы вместо n1n2n3 выполучить что-то более читаемое;в этом случае я предлагаю пойти с этим решением, представленным здесь
- Я предлагаю вам прочитать блог Блейза здесь и здесь - это должно помочьпонять свое решение или, по крайней мере, как лучше сформулировать свой вопрос.
ОБНОВЛЕНИЕ: Хорошо, вам нужно обернуть эти две группы элементов xsd: sequence xsd: sequence и затем поиграть сфайл привязок, чтобы получить то, что вы хотите (я полагаю, вы используете JAXB).
ОБНОВЛЕНИЕ 2: Так что, похоже, вы используете JAXB.Затем, если вы возьмете схему ниже, я думаю, что она даст вам то, что вы хотите, повторно использовать (путем ссылки на группы моделей) и не будет новых классов.Я опубликую оба артефакта, но я предлагаю вам также попробовать (я использовал NetBeans), чтобы посмотреть, что происходит (также написать тестовый клиент на Java, который использует класс, посмотреть, что увидит разработчик и т. Д.) Иесли это не то, что вам нужно, используйте результаты вашей попытки, чтобы проиллюстрировать еще один ваш вопрос.
XSD:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="account">
<xsd:complexType>
<xsd:choice>
<xsd:group ref="login"/>
<xsd:group ref="contact"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:group name="login">
<xsd:sequence>
<xsd:element name="login-id" type="xsd:string"/>
<xsd:element name="login-username" type="xsd:string"/>
<xsd:element name="login-password" type="xsd:string"/>
<xsd:element name="login-note" type="xsd:string"/>
</xsd:sequence>
</xsd:group>
<xsd:group name="contact">
<xsd:sequence>
<xsd:element name="contact-name" type="xsd:string"/>
<xsd:element name="contact-address" type="xsd:string"/>
<xsd:element name="contact-phone" type="xsd:string"/>
<xsd:element name="contact-note" type="xsd:string"/>
</xsd:sequence>
</xsd:group>
</xsd:schema>
Java Generated class (по умолчанию, никаких пользовательских привязок удаленонерелевантное содержание):
package sequnderchoice;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"loginId",
"loginUsername",
"loginPassword",
"loginNote",
"contactName",
"contactAddress",
"contactPhone",
"contactNote"
})
@XmlRootElement(name = "account")
public class Account {
@XmlElement(name = "login-id")
protected String loginId;
@XmlElement(name = "login-username")
protected String loginUsername;
@XmlElement(name = "login-password")
protected String loginPassword;
@XmlElement(name = "login-note")
protected String loginNote;
@XmlElement(name = "contact-name")
protected String contactName;
@XmlElement(name = "contact-address")
protected String contactAddress;
@XmlElement(name = "contact-phone")
protected String contactPhone;
@XmlElement(name = "contact-note")
protected String contactNote;
public String getLoginId() {
return loginId;
}
public void setLoginId(String value) {
this.loginId = value;
}
public String getLoginUsername() {
return loginUsername;
}
public void setLoginUsername(String value) {
this.loginUsername = value;
}
public String getLoginPassword() {
return loginPassword;
}
public void setLoginPassword(String value) {
this.loginPassword = value;
}
public String getLoginNote() {
return loginNote;
}
public void setLoginNote(String value) {
this.loginNote = value;
}
public String getContactName() {
return contactName;
}
public void setContactName(String value) {
this.contactName = value;
}
public String getContactAddress() {
return contactAddress;
}
public void setContactAddress(String value) {
this.contactAddress = value;
}
public String getContactPhone() {
return contactPhone;
}
public void setContactPhone(String value) {
this.contactPhone = value;
}
public String getContactNote() {
return contactNote;
}
public void setContactNote(String value) {
this.contactNote = value;
}
}