JAXB 淺談

最近項目中需求要將用戶上傳的xml文件信息導入數據庫,項目中使用sun提供的jaxb來解析xml文件並生成java對象,本人根據項目應用和網上的一些評論總結了下
對jaxb的應用,歡迎板磚,廢話不多說了
首先我們要從sun下載一個jaxb的壓縮包,在命令行模式下,將目錄轉到jaxb-ri-20101209.jar,用命令java -jar jaxb-ri-20101209.jar
這樣,在該目錄下會生成一個文件夾jaxb-ri-20101209,文件夾中有bin,docs,lib,samples,看目錄就應該明白,在此就不做解釋了。

在命令行中進入到安裝目錄的bin文件夾下運行xjc指令,如果不出現“xjc”is not recogized。。。證明安裝成功

使用xsd文件生成java類的方法
在命令行中進入文件夾jaxb-ri-20101209目錄的bin文件夾
輸入命令
xjc -d c:\test -p com.primeton.governor.dict.xmlloader c:\test\test.xsd

c:\test生成java類的目錄
com.primeton.governor.dict.xmlloader生成java類的包路徑
c:\test\test.xsd  xsd文件的目錄
例如
test.xsd文件
Java代碼  收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  
  3.   <xs:element name="resource">  
  4.     <xs:complexType>  
  5.       <xs:sequence>  
  6.         <xs:element ref="servlet-mapping"/>  
  7.         <xs:element ref="servlet-class"/>  
  8.       </xs:sequence>  
  9.     </xs:complexType>  
  10.   </xs:element>  
  11.   <xs:element name="servlet-mapping">  
  12.     <xs:complexType mixed="true">  
  13.       <xs:attribute name="id" use="required" type="xs:NCName"/>  
  14.     </xs:complexType>  
  15.   </xs:element>  
  16.   <xs:element name="servlet-class">  
  17.     <xs:complexType mixed="true">  
  18.       <xs:sequence>  
  19.         <xs:element minOccurs="0" maxOccurs="unbounded" ref="test"/>  
  20.       </xs:sequence>  
  21.       <xs:attribute name="name" use="required" type="xs:NCName"/>  
  22.     </xs:complexType>  
  23.   </xs:element>  
  24.   <xs:element name="test" type="xs:integer"/>  
  25. </xs:schema>  

生成的java類爲
ObjectFactory.java
Resource.java
ServletClass.java
ServletMapping.java

其中一個java類Resource.java,@XmlAccessorType,@XmlType,這是給引擎使用的
Java代碼  收藏代碼
  1. @XmlAccessorType(XmlAccessType.FIELD)  
  2. @XmlType(name = "", propOrder = {  
  3.     "servletMapping",  
  4.     "servletClass"  
  5. })  
  6. @XmlRootElement(name = "resource")  
  7. public class Resource {  
  8.   
  9.     @XmlElement(name = "servlet-mapping", required = true)  
  10.     protected ServletMapping servletMapping;  
  11.     @XmlElement(name = "servlet-class", required = true)  
  12.     protected ServletClass servletClass;  
  13.   
  14.     /** 
  15.      * Gets the value of the servletMapping property. 
  16.      *  
  17.      * @return 
  18.      *     possible object is 
  19.      *     {@link ServletMapping } 
  20.      *      
  21.      */  
  22.     public ServletMapping getServletMapping() {  
  23.         return servletMapping;  
  24.     }  
  25.   
  26.     /** 
  27.      * Sets the value of the servletMapping property. 
  28.      *  
  29.      * @param value 
  30.      *     allowed object is 
  31.      *     {@link ServletMapping } 
  32.      *      
  33.      */  
  34.     public void setServletMapping(ServletMapping value) {  
  35.         this.servletMapping = value;  
  36.     }  
  37.   
  38.     /** 
  39.      * Gets the value of the servletClass property. 
  40.      *  
  41.      * @return 
  42.      *     possible object is 
  43.      *     {@link ServletClass } 
  44.      *      
  45.      */  
  46.     public ServletClass getServletClass() {  
  47.         return servletClass;  
  48.     }  
  49.   
  50.     /** 
  51.      * Sets the value of the servletClass property. 
  52.      *  
  53.      * @param value 
  54.      *     allowed object is 
  55.      *     {@link ServletClass } 
  56.      *      
  57.      */  
  58.     public void setServletClass(ServletClass value) {  
  59.         this.servletClass = value;  
  60.     }  
  61. }  


如何將xml文件轉換爲xsd文件
首先我們要從sun下載一個trang的壓縮包,解壓縮後會有一個trang.jar的文件
在命令行中進入trang.jar所在的目錄,輸入如下命令:
java -jar trang.jar XXX1.xml XXX2.xsd

XXX1.xml爲當前文件夾目錄下的xml文件,也是要轉換的xml文件
XXX2.xsd文件爲轉換後的xsd文件

例如要轉換的xml文件爲test.xml
Java代碼  收藏代碼
  1. <resource>  
  2.     <servlet-mapping id="sm">*.action</servlet-mapping>  
  3.     <servlet-class name="sc">  
  4.         TestListence  
  5.         <test>1</test>  
  6.     </servlet-class>  
  7. </resource>  


轉換爲的xsd文件
Java代碼  收藏代碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">  
  3.   <xs:element name="resource">  
  4.     <xs:complexType>  
  5.       <xs:sequence>  
  6.         <xs:element ref="servlet-mapping"/>  
  7.         <xs:element ref="servlet-class"/>  
  8.       </xs:sequence>  
  9.     </xs:complexType>  
  10.   </xs:element>  
  11.   <xs:element name="servlet-mapping">  
  12.     <xs:complexType mixed="true">  
  13.       <xs:attribute name="id" use="required" type="xs:NCName"/>  
  14.     </xs:complexType>  
  15.   </xs:element>  
  16.   <xs:element name="servlet-class">  
  17.     <xs:complexType mixed="true">  
  18.       <xs:sequence>  
  19.         <xs:element minOccurs="0" maxOccurs="unbounded" ref="test"/>  
  20.       </xs:sequence>  
  21.       <xs:attribute name="name" use="required" type="xs:NCName"/>  
  22.     </xs:complexType>  
  23.   </xs:element>  
  24.   <xs:element name="test" type="xs:integer"/>  
  25. </xs:schema> 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章