xmlbeans 封装xml

来源:互联网 发布:上海淘宝培训班多少钱 编辑:程序博客网 时间:2024/06/06 06:59

最近的项目中有个生成xml字符串的需求:

第三方合作伙伴提交一个请求,我们作为server端负责从DB中查询出符合条件的记录,然后构造成xml字符串返回给第三方合作伙伴。

 

以前有过dom的使用经验,但dom的缺点大家都知道:当xml比较复杂时,性能不是很好。当DB中记录比较多时,需要构造的xml会比较复杂。网上大家都说XmlBeans不错,这次尝试使用下,以下是具体的应用过程。 

 

 

 

1.         准备工作

 

一、下载XmlBeans
必需的软件:XmlBeans安装包( 我们这里以XmlBeans 2.2.0为例)

二、设置环境变量(windows下和Linux下的基本一致)

(一)  修改PATH 环境变量把xmlbean\bin目录加入:%XMLBEANS_HOME%\bin.

(二)  修改CLASSPATH环境变量,添加XmlBean相关的几个jar包。

 

2.         定义xml文件格式,及生成xsd文件。

(一)  根据需要定义xml文件格式,可以不添加具体的数据,例如:

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <response >  
  4.   
  5. <record>  
  6.         <id/>   
  7.         <order_username/>  
  8.         <order_time/>  
  9. </record>  
  10.   
  11. </response>  

 

  

(二)  生成xsd文件。

可以使用XMLSPY通过XML文件来生成Schema文件,当然手工写是更好的。网上可以很容易找到XMLSPY。

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
  2.   
  3. <!--W3C Schema 由 XMLSpy v2006 U 创建 (http://www.altova.com)-->  
  4.   
  5. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"   
  6. elementFormDefault="qualified">  
  7.   
  8.        <xs:element name="id" type="xs:string"/>  
  9.   
  10.        <xs:element name="order_time" type="xs:string"/>  
  11.   
  12.        <xs:element name="order_username" type="xs:string"/>  
  13.   
  14.        <xs:element name="record">  
  15.   
  16.               <xs:complexType>  
  17.   
  18.                      <xs:sequence>  
  19.   
  20.                             <xs:element ref="id"/>  
  21.   
  22.                             <xs:element ref="order_username"/>  
  23.   
  24.                             <xs:element ref="order_time"/>  
  25.   
  26.                      </xs:sequence>  
  27.   
  28.               </xs:complexType>  
  29.   
  30.        </xs:element>  
  31.   
  32.        <xs:element name="response">  
  33.   
  34.               <xs:complexType>  
  35.   
  36.                      <xs:sequence>  
  37.   
  38.                             <xs:element ref="record"/>  
  39.   
  40.                      </xs:sequence>  
  41.   
  42.               </xs:complexType>  
  43.   
  44.        </xs:element>  
  45.   
  46. </xs:schema>  

  

3.         使用XmlBeans命令生成xml对应的jar包和源文件。
scomp -src build\src  -out build\testXmlBean.jar schema\test.xsd  -compiler 
C:\jdk150_12\bin\javac 

scomp生成testXmlBean.jar,放在build目录下,同时生成源代码放在build\src下,Schema文件是test.xsd,我们要的是jar文件。

 

4.        制定testXmlBean.jar中类的路径。

 

Xml代码  收藏代码
  1. <xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">      
  2.   <xb:namespace>    
  3.     <xb:package>test.pkg</xb:package>     
  4.   </xb:namespace>     
  5.   </xb:config>  

 

 test.pkg是testXmlBean.jar中的类所在的路径,这个是必须要制定的。

 

5.        构造xml文件。

根据DB中的数据,构造xml记录,常用于和第三方的数据通讯。 

 

 

Java代码  收藏代码
  1. public static String createXML(List testList) {   
  2.     StringBuffer xmlGen = new StringBuffer();   
  3.     try{  
  4.         ResponseDocument newPODoc = ResponseDocument.Factory.newInstance();   
  5.         Response response = newPODoc.addNewResponse();   
  6.   
  7.         for(int i = 0; i < testList.size(); i++){   
  8.             TestDTO testDTO = (TestDTO) testList.get(i);   
  9.             Record record = response.addNewRecord();   
  10.             record.setId(String.valueOftestDTO.getId)));     
  11.             record.setOrderUsername(testDTO.getUsername());    
  12.             record.setOrderTime(testDTO.getSubmitdate());   
  13.             response.setRecordArray(i, record);   
  14.         }   
  15.   
  16.         //生成xml文件   
  17.       newPODoc.save(new File("/data/test/test" +   DateUtils.dateToLongString(new Date()) + ".xml"));   
  18.   
  19.         xmlGen.append(newPODoc.xmlText());//xml字符串   
  20.     }catch(Exception e){  
  21.         e.printStackTrace();   
  22.       }   
  23.   
  24.       return xmlGen.toString();   
  25.   
  26. }  

原创粉丝点击