`

实战xml构造解析之XmlBeans的使用

阅读更多

 

最近的项目中有个生成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 version="1.0" encoding="UTF-8"?>

<response >

<record>
        <id/> 
        <order_username/>
        <order_time/>
</record>

</response>

 

  

(二)  生成xsd文件。

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

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!--W3C Schema 由 XMLSpy v2006 U 创建 (http://www.altova.com)-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified">

       <xs:element name="id" type="xs:string"/>

       <xs:element name="order_time" type="xs:string"/>

       <xs:element name="order_username" type="xs:string"/>

       <xs:element name="record">

              <xs:complexType>

                     <xs:sequence>

                            <xs:element ref="id"/>

                            <xs:element ref="order_username"/>

                            <xs:element ref="order_time"/>

                     </xs:sequence>

              </xs:complexType>

       </xs:element>

       <xs:element name="response">

              <xs:complexType>

                     <xs:sequence>

                            <xs:element ref="record"/>

                     </xs:sequence>

              </xs:complexType>

       </xs:element>

</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中类的路径。

 

<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">    
  <xb:namespace>  
    <xb:package>test.pkg</xb:package>   
  </xb:namespace>   
  </xb:config>

 

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

 

5.        构造xml文件。

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

 

 

public static String createXML(List testList) { 
    StringBuffer xmlGen = new StringBuffer(); 
    try{
        ResponseDocument newPODoc = ResponseDocument.Factory.newInstance(); 
        Response response = newPODoc.addNewResponse(); 

        for(int i = 0; i < testList.size(); i++){ 
            TestDTO testDTO = (TestDTO) testList.get(i); 
            Record record = response.addNewRecord(); 
            record.setId(String.valueOftestDTO.getId)));   
            record.setOrderUsername(testDTO.getUsername());  
            record.setOrderTime(testDTO.getSubmitdate()); 
            response.setRecordArray(i, record); 
        } 

        //生成xml文件 
      newPODoc.save(new File("/data/test/test" +   DateUtils.dateToLongString(new Date()) + ".xml")); 

        xmlGen.append(newPODoc.xmlText());//xml字符串 
    }catch(Exception e){
        e.printStackTrace(); 
      } 

      return xmlGen.toString(); 

} 

 

2
0
分享到:
评论

相关推荐

    XML、Java 与 XMLBeans 结合应用的商业价值

    XMLBeans提供的Api,如XmlObject、XmlCursor和SchemaType,分别提供了对XML实例的高级访问、低级别操作和模式元数据的访问,简化了XML在Java应用中的使用。 使用XMLBeans有以下几个显著优点: 1. **减少重复工作**...

    使用XmlBeans读写xml

    在本文中,我们将深入探讨如何使用XmlBeans进行XML的读取和写入,并了解其背后的工作原理。 首先,XmlBeans通过解析XML Schema(XSD)文件生成Java类,这些类代表了XML文档的结构。这样,你可以像操作普通的Java...

    XmlBeans 使用简介

    本文档将为读者介绍 XmlBeans 的使用简介,包括 XmlSchema 的制作相关知识,以及如何使用 XmlBeans 工具在 Java 中轻松读写 XML。 一、XmlSchema 简介 XmlSchema 是一种基于 XML 的架构定义语言,用于定义 XML ...

    xmlbeans.jar

    2. `stax-api.jar`:STAX(Streaming API for XML)是一个低级别的XML解析API,XMLBeans可能使用它来实现更高效的XML流处理。 3. `xbean_xpath.jar`:提供了XPath支持,允许你在Java代码中使用XPath表达式来查询XML...

    xmlbeans-2.6.0.jar即xmlbeans-2.3.0.jar资源

    XMLBeans的核心理念是将XML Schema转换为Java类,这样就可以直接在Java程序中以对象的形式处理XML数据,无需手动解析XML字符串。这个过程被称为XML Schema绑定(Schema-Based XML Binding)。 在提供的资源中,...

    xmlbeans使用手册

    ### XMLBeans使用手册详解 XMLBeans是Apache组织下的一个开源项目,它提供了一种将XML数据与Java对象之间进行转换的工具。通过XMLBeans,开发者能够轻松地将XML文档映射到Java对象,同时也可以将Java对象序列化为...

    Java XML绑定技术 (Castor JAXB XMLBeans)

    4. **解析XML**:使用JAXB API将XML反序列化为Java对象。 #### 四、XMLBeans XMLBeans是由Apache Software Foundation维护的一个开源项目,它提供了一套强大的工具集来处理XML数据。XMLBeans不仅仅是一个XML绑定...

    maven+svn+XMLBeans+xml

    接着,你可以使用XMLBeans的API来解析XML文件,将XML数据转换为Java对象,或者将Java对象序列化为XML。 Subversion(SVN)是一个版本控制系统,用于跟踪和控制代码的修改历史。在团队开发中,所有开发者都会将他们...

    xmlbeans的jar包

    XMLBeans是Apache软件基金会开发的一个Java库,它提供了一种方式来处理XML文档,通过将XML Schema转换为Java类,使开发者能够以面向对象的方式与XML数据进行交互。这个库包含多个组件,如`jsr173_1.0_api.jar`、`...

    xmlbeans-2.6.0.zip

    XMLBeans是一个XML-Java绑定工具,利用它可以很方便地解析XML文档。 使用 XMLBeans 可以将 Java™ 编程语言与 XML 结合使用。Java 编程语言是一种面向对象的语言,它基于开放的、公开的标准,可移植、健壮而且可靠...

    xmlbeans

    当XMLBeans解析一个XML Schema时,它会生成相应的Java类,这些类代表了Schema定义的数据结构。每个XML元素在Java中都有一个对应的类,属性则作为类的字段,而元素则作为方法。这样,XML文档就可以被映射到一组Java...

    XMLBEANS的使用总结[调试笔记]

    2. **解析XML**:生成Java类后,你可以使用`XmlBeanFactory`来创建XML文档的Java表示。例如,`Document doc = XmlBeans.Factory.newDocumentBuilderFactory().newDocumentBuilder().parse(xmlFile)`。 3. **操作XML...

    xmlbeans-2.3.0.jar

    在处理2007之后的 Excel 格式时,POI 使用了 XMLBeans 来解析和生成 XML 数据,因为这些格式本质上是基于 ZIP 的 XML 包。 当出现 `ClassNotFoundException`,尤其是找不到 `org.apache.xmlbeans.XmlOptions` 类时...

    xmlbeans2.6.0

    在读取.xlsx文件时,Apache POI会利用XMLBeans解析内含的XML数据,而写入时则可能使用XMLBeans将Java对象转换为XML。 标签中的"java"表明讨论的是与Java编程相关的技术。"excel"指的是Apache POI处理的文件类型。...

    xmlbeans-2.5.0.jar

    1. **XML Schema到Java的绑定**:XMLBeans会根据XML Schema定义生成相应的Java类,这些类包含了对XML文档的解析和序列化功能。这样,开发者可以使用面向对象的方式来处理XML,而无需直接操作DOM或SAX等底层API。 2....

    xmlbeans-bin-3.1.0.zip

    开发者在使用时,首先需要了解XML Schema的概念,然后根据自己的XML数据定义相应的Schema文件,再使用XMLBeans提供的工具(如scomp)进行编译,生成相应的Java类。最后,就可以在项目中导入生成的库,使用这些Java类...

    xmlbeans 源码

    XMLBeans是Apache软件基金...通过对XMLBeans源码的学习,开发者可以更好地理解XML在Java应用程序中的使用,以及如何利用XMLBeans进行高效的XML处理。同时,这也为自定义XML处理逻辑或者扩展XMLBeans的功能提供了基础。

    xmlbeans-2.5.0

    XMLBeans的使用能够加强XFire在处理XML消息时的能力,提供更高效的XML解析和序列化。 - **结合使用场景**:当使用XFire创建或调用Web服务时,XMLBeans可以作为默认的数据绑定机制,使得XML数据和Java对象之间的转换...

    xmlbeans demo

    6. **性能和内存使用**:虽然XMLBeans提供了强类型和面向对象的XML处理方式,但它可能会占用更多的内存,且相比DOM或SAX解析器,性能可能较低。因此,在大型项目中,需要权衡其便利性和性能需求。 7. **集成到Java...

    xmlbeans 2.3.0

    生成的代码可以直接在Java应用程序中使用,无需手动编写解析XML的代码。 3. **性能优化**:XMLBeans通过使用Java内存模型和直接在内存中存储XML数据来提高性能。它使用了高效的编码和解码机制,减少了CPU和内存资源...

Global site tag (gtag.js) - Google Analytics