如何解决从 xsd 生成类并重命名,包括 getter/setter
我正在尝试从 Java 11 中的 xsd 文件生成类文件。使用的部分架构是:
<xs:element name="OptionList">
<xs:complexType>
<xs:sequence>
<xs:element name="Option" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Code" type="xs:string" use="required"/>
<xs:attribute name="StatusCode" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
@XmlAccessorType(XmlAccesstype.FIELD)
@XmlType(name = "",propOrder = {
"option"
})
@XmlRootElement(name = "OptionList")
public class OptionList {
@XmlElement(name = "Option",required = true)
protected List<OptionList.Option> option;
public List<OptionList.Option> getoption() {
if (option == null) {
option = new ArrayList<OptionList.Option>();
}
return this.option;
}
@XmlAccessorType(XmlAccesstype.FIELD)
@XmlType(name = "",propOrder = {
"description"
})
public static class Option {
@XmlElement(name = "Description")
protected String description;
@XmlAttribute(name = "Code",namespace = "urn:schema:common:v1",required = true)
protected String code;
@XmlAttribute(name = "StatusCode",namespace = "urn:schema:common:v1")
protected String statusCode;
public String getDescription() {
return description;
}
public void setDescription(String value) {
this.description = value;
}
public String getCode() {
return code;
}
public void setCode(String value) {
this.code = value;
}
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String value) {
this.statusCode = value;
}
}
}
我需要将类拆分为多个文件。我尝试添加 localScopeing="toplevel" 如下:
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="2.1"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb">
<jxb:globalBindings localscoping="toplevel"/>
</jxb:bindings>
这会生成 Option 对象作为单独的类,但问题仍然是 OptionList 元素和 getter/setter 仍然引用 OptionList.Option 而不是新的 Option 对象。 有没有办法在生成时将它们完全分开并引用生成的类?生成的理想文件是这些:
@XmlAccessorType(XmlAccesstype.FIELD)
@XmlType(name = "",required = true)
protected List<Option> option;
public List<Option> getoption() {
if (option == null) {
option = new ArrayList<Option>();
}
return this.option;
}
}
@XmlAccessorType(XmlAccesstype.FIELD)
@XmlType(name = "",propOrder = {
"description"
})
public static class Option {
@XmlElement(name = "Description")
protected String description;
@XmlAttribute(name = "Code",required = true)
protected String code;
@XmlAttribute(name = "StatusCode",namespace = "urn:schema:common:v1")
protected String statusCode;
public String getDescription() {
return description;
}
public void setDescription(String value) {
this.description = value;
}
public String getCode() {
return code;
}
public void setCode(String value) {
this.code = value;
}
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String value) {
this.statusCode = value;
}
}
解决方法
我无法想出一种方法来按需要执行此操作。我最终修改了原始 xsd 以使其适合我的需要。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。