0735郴州新网,云南网站建设优化,做网站需要营业执照吗,设计素材库说明
JAXB有个schemagen脚本#xff0c;可以根据Java文件生成XML schema。这个工具在JAXB独立发布包中有#xff0c;可以从官网下载JAXB的独立发布包#xff1a; https://eclipse-ee4j.github.io/jaxb-ri/
示例
使用schemagen -d path java files格式
…说明
JAXB有个schemagen脚本可以根据Java文件生成XML schema。这个工具在JAXB独立发布包中有可以从官网下载JAXB的独立发布包 https://eclipse-ee4j.github.io/jaxb-ri/
示例
使用schemagen -d path java files格式
其中-d path指明了XML schema文件的输出路径 如果要生成schema的Java文件没有引用外部的Java文件可以使用这种方式。
例如根据下面这个Java类生成XML schema文件。
package com.thb.server.register;import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;// 使用了JAXB注解映射到xml中的request元素
XmlRootElement(name request)
XmlType(propOrder {reqtype, secret, enterpriseAccount})
public class RegisterRequest {private String reqtype;private String secret;private String enterpriseAccount;// 使用了JAXB注解映射到xml中的reqtype元素XmlElement(namereqtype, required true)public String getReqtype() {return this.reqtype;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值public void setReqtype(String reqtype) {this.reqtype reqtype;}// 使用了JAXB注解映射到xml中的secret元素XmlElement(namesecret, required true)public String getSecret() {return this.secret;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值public void setSecret(String secret) {this.secret secret;}// 使用了JAXB注解映射到xml中的body元素XmlElement(name body, required true)public String getEnterpriseAccount() {return this.enterpriseAccount;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值public void setEnterpriseAccount(String enterpriseAccount) {this.enterpriseAccount enterpriseAccount;}
}在cmd窗口下执行命令
schemagen -d D:\temp\outschema D:\temp\eclipse-workspace\java_work\powe
r-restful-webservice-server\src\main\java\com\thb\server\register\RegisterRequest.java生成的XML schema文件的内容
?xml version1.0 encodingUTF-8 standaloneyes?
xs:schema version1.0 xmlns:xshttp://www.w3.org/2001/XMLSchemaxs:element namerequest typeregisterRequest/xs:complexType nameregisterRequestxs:sequencexs:element namereqtype typexs:string/xs:element namesecret typexs:string/xs:element namebody typexs:string//xs:sequence/xs:complexType
/xs:schema使用schemagen -d path -cp path java files格式
其中-cp path指明了classpath注意path中不包含包名。 如果要XML schema文件的Java文件引用了外部类要使用-cp path指明寻找路径。
例如下面是要生成XML schema文件的Java文件Java的属性seeContent引用了一外部类SeeContent
package com.thb.server.topology;import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;// 使用了JAXB注解映射到xml中的request元素
XmlRootElement(name request)
XmlType(propOrder {reqtype, secret, seeContent})
public class TopologyRequest {private String reqtype;private String secret;private SeeContent seeContent;// 使用了JAXB注解映射到xml中的reqtype元素XmlElement(namereqtype, required true)public String getReqtype() {return this.reqtype;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值public void setReqtype(String reqtype) {this.reqtype reqtype;}// 使用了JAXB注解映射到xml中的secret元素XmlElement(namesecret, required true)public String getSecret() {return this.secret;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值public void setSecret(String secret) {this.secret secret;}// 使用了JAXB注解映射到xml中的body元素XmlElement(namebody, required true)public SeeContent getSeeContent() {return this.seeContent;}public void setSeeContent(SeeContent seeContent) {this.seeContent seeContent;}
}外部类SeeContent的定义
package com.thb.server.topology;import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlType;XmlType(propOrder {userid, seeid, upseeid, status})
class SeeContent{private String userid;private String seeid; private String upseeid;private String status;// 使用了JAXB注解映射到xml中body元素下面的userid元素XmlElement(nameuserid, required true)String getUserid() {return this.userid;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值void setUserid(String userid) {this.userid userid;}// 使用了JAXB注解映射到xml中body元素下面的seeid元素XmlElement(nameseeid, required true)String getSeeid() {return this.seeid;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值void setSeeid(String seeid) {this.seeid seeid;}// 使用了JAXB注解映射到xml中body元素下面的upseeid元素XmlElement(nameupseeid, required true)String getUpseeid() {return this.upseeid;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值void setUpseeid(String upseeid) {this.upseeid upseeid;}// 使用了JAXB注解映射到xml中body元素下面的status元素XmlElement(namestatus, required true)String getStatus() {return this.status;}// 此处的setter函数要有否则从xml反序列到java对象的时候无法赋值void setStatus(String status) {this.status status;}
}在cmd窗口下执行命令
schemagen -d D:\temp\outschema -cp D:\temp\eclipse-workspace\java_work\
power-restful-webservice-server\src\main\java D:\temp\eclipse-workspace\java_work\power-restful-webservice-server\src\main\java\com\thb\server\topology\TopologyRequest.java生成的XML schema文件的内容
?xml version1.0 encodingUTF-8 standaloneyes?
xs:schema version1.0 xmlns:xshttp://www.w3.org/2001/XMLSchemaxs:element namerequest typetopologyRequest/xs:complexType nametopologyRequestxs:sequencexs:element namereqtype typexs:string/xs:element namesecret typexs:string/xs:element namebody typeseeContent//xs:sequence/xs:complexTypexs:complexType nameseeContentxs:sequencexs:element nameuserid typexs:string/xs:element nameseeid typexs:string/xs:element nameupseeid typexs:string/xs:element namestatus typexs:string//xs:sequence/xs:complexType
/xs:schema