`
zyl
  • 浏览: 486316 次
社区版块
存档分类
最新评论

体验jibx的灵活和快速

阅读更多

    jibx又一个不错的xml绑定工具,随着这段时间的使用,感觉越来越随心应手了。和jaxb一样,都是属于xml绑定工具。不同于jaxb,jibx使用java字节码enhance技术,而jaxb更多在于源代码生成技术。jibx的工作主要在于前期,也就是进行字节码绑定,这一部分基本上都是在编译器完成的。在运行期,不需要任何的配置,由于字节码已经嵌入java类中。而jaxb更多在于运行期绑定,通过元数据或者xsd文件进行解析绑定。相对于jaxb来说,jibx更加的快速以及灵活。不过,前期的编译工作还是需要花费一点时间熟悉。下面通过一个简单的例子来说明,例子是其官方自带的。
    首先从网上下载jibx包 http://jibx.sourceforge.net/ 为其主要的官网。
    假设有两个类Person和Customer
    使用最简单的方式声明:
  
java 代码
 
  1. public class Customer {  
  2.     public Person person;  
  3.     public String street;  
  4.     public String city;  
  5.     public String state;  
  6.     public Integer zip;  
  7.     public String phone;  
  8.    }  
  9.     public class Person {  
  10.     public int customerNumber;  
  11.     public String firstName;  
  12.     public String lastName;  
  13.    }  

xml 数据结构如下:
xml 代码
 
  1. <customer>  
  2.   <person>  
  3.     <cust-num>123456789</cust-num>  
  4.     <first-name>John</first-name>  
  5.     <last-name>Smith</last-name>  
  6.   </person>  
  7.   <street>12345 Happy Lane</street>  
  8.   <city>Plunk</city>  
  9.   <state>WA</state>  
  10.   <zip>98059</zip>  
  11.   <phone>888.555.1234</phone>  
  12. </customer>  

 
为了匹配相应的数据,jibx需要相应的映射文档,用于匹配java类和xml数据,如下:
xml 代码
 
  1. <binding>  
  2.   <mapping name="customer" class="org.jibx.starter.Customer">  
  3.     <structure name="person" field="person">  
  4.       <value name="cust-num" field="customerNumber"/>  
  5.       <value name="first-name" field="firstName"/>  
  6.       <value name="last-name" field="lastName"/>  
  7.     </structure>  
  8.     <value name="street" field="street"/>  
  9.     <value name="city" field="city"/>  
  10.     <value name="state" field="state"/>  
  11.     <value name="zip" field="zip"/>  
  12.     <value name="phone" field="phone"/>  
  13.   </mapping>  
  14. </binding>    

 
当然手写是比较费力的,还好,jibx工具提供了相应的生成方法:jibxtools包提供了BindingGenerator类,用于生成相应的xml文件
可以直接在cmd下执行:java -jar  jibxtools.jar -f bind.xml Customer
如果没有复杂的属性,如枚举和数组,直接就可以生成了。
现在开始编译期的最后一步:绑定类
同样可以使用cmd的方式或者ant task来执行
java -jar jibx-bind.jar binding.xml
主要的执行类为org.jibx.binding.Compile,也可以直接运行此类
如果你有java反编译器,可以查看相应的类文件已经更改,增加了相应的jibx信息,并且增加了相应的jibx_binding*_access类。
在运行期,你只需要使用以下的代码来进行处理就行了,由于jibx 使用最新的xml pull技术,执行的速度还是比较快的。
java 代码
 
  1.  IBindingFactory bfact = BindingDirectory.getFactory(Customer.class);  
  2.  // unmarshal customer information from file  
  3.  IUnmarshallingContext uctx = bfact.createUnmarshallingContext();  
  4.  FileInputStream in = new FileInputStream("data.xml");  
  5.  Customer customer = (Customer)uctx.unmarshalDocument(in, null);  
  6. //marshal  
  7. IMarshallingContext mctx = bfact.createMarshallingContext();  
  8. mctx.setIndent(2);  
  9. FileOutputStream out = new FileOutputStream("data.xml");  
  10. mctx.marshalDocument(customer, "UTF-8"null, out);  


如果你的xml数据结构比较固定,可以考虑使用。
分享到:
评论
6 楼 aone 2007-03-24  
castor
5 楼 amang 2007-03-24  
个人感觉太复杂了。
4 楼 zyl 2007-02-28  
快速是相对而言的,又灵活,又想快速,至少在java的世界里,这也算可以的。最快的方法莫过于直接序列化,java也提供了不错的工具,XStream就不错,没有配置,代码也很少:
#  InputStream in = XStreamDataReader.class.getResourceAsStream("data.xml");  
#             Customer bo = (Customer)xstream.fromXML(in);  
3 楼 ray_linn 2007-02-28  
这么多代码和配置还能算快速了???个人觉得快速这个词完全是java最滥用的词之一。

跟.net学学,用Attribute和XmlSerilizer才几行而已,好像就2行足够了。。。(默认的情况了Attribute都可以省略)

2 楼 zyl 2007-02-28  
如果 java类比较稳定的话,采用绑定是比较节省开发时间的,毕竟每次用dom去解析比较的累
1 楼 larryzou 2007-02-26  
感觉是为了保持javacode的稳定性。这是它的好处。
javabean不变,当schema变的时候改配置文件就可以了,不会影响java code。不然像jaxb就要重新generate java code了。

相关推荐

    jibx使用指南和例子

    它提供了一种高效且灵活的方式来处理XML序列化和反序列化,相较于其他如JAXB(Java Architecture for XML Binding)等工具,JiBX在性能和简洁性上具有优势。本指南将详细介绍JiBX的使用方法,并通过实例来帮助理解其...

    jibx官网下载的jar以及开发文档

    4. **示例和教程**:可能还会包含一些示例代码和教程,帮助开发者快速上手,理解JiBX的工作原理和最佳实践。 5. **API文档**:Javadoc形式的API文档可以帮助开发者查找和理解JiBX提供的各种类和方法,以便更好地...

    jibx环境,代码,jdk,jar

    总结,JiBX是一个强大且灵活的工具,用于简化Java对象和XML之间的绑定。理解并熟练掌握JiBX的环境配置、代码绑定以及与JDK和JAR的关系,将有助于你更高效地利用XML数据,提升开发效率。在实践中,你可以结合Ant或...

    jibx实例

    4. **动态绑定**:JiBX的一个核心特性是其动态绑定能力,可以在运行时调整绑定,这对于需要灵活适应变化的系统特别有用。 5. **Eclipse集成**:了解如何在Eclipse中配置和运行JiBX项目,包括设置构建路径、添加JiBX...

    JiBx开发入门指南

    JiBx又一个不错的xml绑定工具,和jaxb等一样,都是属于xml绑定工具。而JiBx使用java字节码enhance技术,不像jaxb等更多在于源代码生成技术。JiB的工作主要在于前期,也就是进行字节码绑定,这一部分基本上都是在...

    axis和jibx学习

    标题“Axis2和JiBX学习”涉及到两个关键的Java技术:Axis2和JiBX。这两个工具在软件开发中,特别是在构建Web服务和对象序列化方面起着重要作用。 Axis2是Apache软件基金会开发的一个开源Web服务引擎,它是Axis1.x的...

    JiBx 1.3.1

    总的来说,JiBX 1.3.1是一个强大而灵活的工具,能够帮助Java开发者高效地处理XML数据,尤其是在JDK 1.8环境下,其性能和易用性得到了进一步提升。对于需要频繁进行Java对象与XML转换的项目,JiBX是一个值得考虑的...

    jibx_1_1.zip_ji_jibx_jibx_1_1

    这种灵活性对于那些希望快速迭代和适应变化需求的项目尤其有用。 2. **映射定义**:JiBX使用简单的XML映射文件来定义Java类和XML元素之间的关系。映射文件可以包含各种转换规则,如字段到元素的映射、属性到方法的...

    JIBX 资源包

    这种灵活性使得JIBX能适应各种不同的XML结构和业务需求。 4. **支持多种绑定场景**:JIBX不仅可以用于XML到Java对象的绑定,还可以用于Java对象到XML的序列化,以及数据库记录到Java对象的映射等。同时,JIBX还支持...

    jibx资源包

    包含了jibx绑定和编译的所有jar包 bcel.jar、jibx-bind.jar、jibx-extras.jar、jibx-run.jar、 jibx-schema.jar、jibx-tools.jar、qdox.jar、stax-api.jar、 wstx-asl.jar、xpp3.jar

    jibx使用介绍

    1. **高性能**:JiBX 在序列化和反序列化的速度上表现优秀。 2. **灵活性**:可以直接使用现有的对象模型,无需生成新的模型。 3. **减少代码冗余**:使用生成的模型通常需要额外的代码来复制数据到实际的对象模型中...

    jibx_1_1_5.zip_ jibx_1_1_5_www.jibx.c

    总的来说,JiBX_1_1_5是一个用于Java应用的高效XML处理工具,它的编译时绑定机制提供了显著的性能优势和高度的灵活性。通过下载并使用这个压缩包,开发者可以获得JiBX的完整功能,进一步优化他们的XML处理流程。

    jibx 1.3.1.zip

    从官网下的,方便网速不好的同学下载,从官网下的,方便网速不好的同学下载从官网下的,方便网速不好的同学下载从官网下的,方便网速不好的同学下载从官网下的,方便网速不好的同学下载从官网下的,方便网速不好的...

    jibx-tools.jar

    根据javaBean对象生成xml文件,可以完成Java对象到XML的转换,Jibx对Java对象的转换相对要负责些,它不仅需要配置xml还且还要生成相应的jar文件,已经xsd文件

    jibx 开发指南 Jibx完成Java到XML的相互转换

    Jibx的优势在于它的灵活性和性能。与JAXB等其他框架相比,Jibx允许更精细的控制序列化和反序列化过程,比如可以通过XML绑定文件自定义序列化行为。然而,这也意味着使用Jibx需要更多的配置工作,例如生成绑定文件和...

    maven-jibx-plugin-1.2.5.jar

    maven-jibx-plugin-1.2.5.jar

    Jibx开发指南.pdf

    JiBX(Java Bindings to XML)是一款在Java领域使用的XML绑定框架,它的主要目的是将XML数据序列化和反序列化为Java对象,同时也支持从Java对象到XML数据的转换。它提供了一种简洁有效的方式来处理XML数据,使得...

    jibx官方资料

    7. **样例和帮助文档**:提供的帮助文档通常包含详细教程、API参考和示例代码,帮助开发者快速理解和使用JiBX。这些示例展示了如何创建绑定定义、如何处理复杂类型、如何进行性能优化等。 8. **与其他技术的集成**...

    Jibx开发指南[借鉴].pdf

    Jibx的主要优点在于它的性能和灵活性。由于Jibx在编译时生成特定的代码,因此在运行时的序列化和反序列化速度比基于反射的解决方案快得多。此外,Jibx允许对XML结构进行精细控制,可以处理复杂的映射场景,如自定义...

Global site tag (gtag.js) - Google Analytics