JAX-WS - 通過xjc命令把Schema生成Java

襲冷發表於2014-06-26

一、說明

    1、使用示例

D:\Works\WebServices\TestXml\src>xjc -d D:\Works\WebServices\TestXml\src -verbose user.xsd
    2、常用引數

        -d dirName     : 指定生成的檔案的存放路徑

        -p pkgName     : 指定目標包

        -xmlschema     : 指定輸入的是一個Schema文件(預設)

        -verbose       : 指定是否顯示生成過程中的訊息

        schemaFile     : 指定需要轉換的Schema文件


二、示例

    1、編寫user.xsd如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--   
    xmlns:xs="http://www.w3.org/2001/XMLSchema" :schema必須有的名稱空間,這裡別名為xs   
    targetNamespace="http://www.xilen.com/user" :當前schema的名稱空間  
    xmlns:tns="http://www.xilen.com/user" :引入的名稱空間,這裡表示引入當前這個schema,這裡別名為tns
-->  
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"  
	targetNamespace="http://www.xilen.com/user" xmlns:tns="http://www.xilen.com/user">

	<xs:element name="user" type="tns:userType"/> <!-- 定義根元素user  -->

	<xs:complexType name="userType"> <!-- 定義user的資料型別  -->
		<xs:sequence>
			<xs:element name="name" type="tns:nameType"/> <!-- 定義user的name子元素,資料型別引用nameType的定義 -->
			<xs:element name="age" type="tns:ageType" /> <!-- 定義user的age元素,資料型別引用ageType的定義 -->
			<xs:element name="sex" type="tns:sexType" /> <!-- 定義user的sex子元素,資料型別引用sexType的定義 -->
			<xs:element name="roles" type="tns:rolesType" /> <!-- 定義user的roles子元素,資料型別引用rolesType的定義 -->
		</xs:sequence>
		<xs:attribute name="id" type="tns:idType"/> <!-- 定義user的屬性,資料型別引用idType的定義 -->
	</xs:complexType>
	
	<xs:complexType name="rolesType"> <!-- 定義roles的資料型別  -->
		<xs:sequence maxOccurs="unbounded" minOccurs="0"> <!-- 定義roles的子元素的容量  -->
			<xs:element name="role" type="tns:roleType" /> <!-- 定義roles的子元素,資料型別引用roleType的定義   -->
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="roleType"> <!-- 定義role的資料型別  -->
		<xs:sequence>
			<xs:element name="name" type="tns:nameType" /> <!-- 定義role的name子元素,資料型別重用用nameType的定義 -->
			<xs:element name="note" type="tns:noteType"/> <!-- 定義role的note子元素,資料型別引用noteType的定義 -->
		</xs:sequence>
		<xs:attribute name="id" type="tns:idType"/><!-- 定義role的id屬性,資料型別重用IdType的定義  -->
	</xs:complexType>

	<xs:simpleType name="idType">  <!-- 定義ID型別 -->
		<xs:restriction base="xs:int"> <!-- 定義限定條件,基於int的型別  -->
			<xs:minInclusive value="1" /> <!-- 最小值 -->
			<xs:maxInclusive value="999999999" /> <!-- 最大值  -->
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="nameType"> <!-- 定義Name -->
		<xs:restriction base="xs:string">
			<xs:pattern value="[a-zA-Z][_a-zA-Z0-9]*" /> <!-- 定義正則來規範名稱 -->
			<xs:minLength value="3" /> <!-- 定義最小長度 -->
			<xs:maxLength value="18" /> <!-- 定義最大長度 -->
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="ageType"> <!-- 定義age的型別  -->
		<xs:restriction base="xs:int"> <!-- 定義限定條件,基於int的型別 -->
			<xs:minInclusive value="0" /><!-- 最小包含0 -->
			<xs:maxExclusive value="150" /><!-- 最大不包含150 -->
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="sexType"> <!-- 定義sex的型別  -->
		<xs:restriction base="xs:string"> <!-- 定義限定條件,基於string的型別  -->
			<xs:enumeration value="MAN" /> <!-- 定義sex為列舉,只可以選擇其一 -->
			<xs:enumeration value="WOMAN" /> 		
			<xs:enumeration value="OTHER" /> 		
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="noteType" > <!-- 定義note的型別 -->
		<xs:restriction base="xs:string"> <!-- 定義限定條件,基於string的型別  -->
			<xs:minLength value="0"/> <!-- 定義最小長度 -->
			<xs:maxLength value="255"/> <!-- 定義最大長度 -->
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
    2、使用xjc命令生成java

        (1)在user.xsd當前路勁下執行命令:

xjc -verbose user.xsd
        (2)生成Java如下:

        
 

 

 

相關文章