`
your233
  • 浏览: 276633 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jaxb2实例以及和XStream的比较

    博客分类:
  • jdk6
阅读更多

 

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Calendar;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

import javax.xml.bind.Unmarshaller;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

public class JAXB2Tester { 

    public static void main(String[] args) throws JAXBException,IOException { 

        JAXBContext context = JAXBContext.newInstance(Person.class); 

        //下面代码演示将对象转变为xml 

        Marshaller m = context.createMarshaller(); 

        Address address = new Address("China","Beijing","Beijing","ShangDi West","100080"); 

        Person p = new Person(Calendar.getInstance(),"JAXB2",address,Gender.MALE,"SW"); 

        FileWriter fw = new FileWriter("person.xml"); 

        m.marshal(p,fw); 

        //下面代码演示将上面生成的xml转换为对象 

        FileReader fr = new FileReader("person.xml"); 

        Unmarshaller um = context.createUnmarshaller(); 

        Person p2 = (Person)um.unmarshal(fr); 

        System.out.println("Country:"+p2.getAddress().getCountry()); 

    } 

}  

@XmlRootElement//表示person是一个根元素 

class Person {    

    @XmlElement 

    Calendar birthDay; //birthday将作为person的子元素 

    @XmlAttribute 

    String name; //name将作为person的的一个属性 

    public Address getAddress() { 

        return address; 

    } 

    @XmlElement 

    Address address; //address将作为person的子元素 

    @XmlElement 

    Gender gender; //gender将作为person的子元素 

    @XmlElement 

    String job; //job将作为person的子元素 

    public Person(){ 

    } 

 

    public Person(Calendar birthDay, String name, Address address, Gender gender, String job) { 

        this.birthDay = birthDay; 

        this.name = name; 

        this.address = address; 

        this.gender = gender; 

        this.job = job; 

    } 

enum Gender{ 

    MALE(true), 

    FEMALE (false); 

    private boolean value; 

    Gender(boolean _value){ 

        value = _value; 

    } 

class Address { 

    @XmlAttribute 

    String country; 

    @XmlElement 

    String state; 

    @XmlElement 

    String city; 

    @XmlElement 

    String street; 

    String zipcode; //由于没有添加@XmlElement,所以该元素不会出现在输出的xml中 

    public Address() { 

    } 

    public Address(String country, String state, String city, String street, String zipcode) { 

        this.country = country; 

        this.state = state; 

        this.city = city; 

        this.street = street; 

        this.zipcode = zipcode; 

    } 

 

    public String getCountry() { 

        return country; 

    } 

 

 

运行该程序,我们会得到一个person.xml的文件,如下: 

 

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

 

<person name="JAXB2"> 

      <birthDay>2006-12-28T08:49:27.203+00:00</birthDay> 

       <address country="China"> 

            <state>Beijing</state> 

            <city>Beijing</city> 

            <street>ShangDi West</street> 

  </address> 

       <gender>MALE</gender> 

       <job>SW</job> 

</person> 

控制台会输出 

 

Country:China 

 

 

 

注意:改功能也可用xStream加注释实现,xStream的jar包需要1.3或者以上。

jaxb2和xstream的区别:

jaxb2如果没有加@XmlElement等注释,是不会写入到xml中的,但是xstream不会

xstream没有加上注释,默认以属性名称写入子级的元素中

XStream还可以将bean转为json,功能比较强悍,个人建议使用xstream


分享到:
评论

相关推荐

    、jackson、xStream、castor、jibx、jaxb2.docx

    在给定的文档中,提到了几种用于Java对象与XML之间转换的技术,包括Jackson、xStream、castor、Jibx和Jaxb2。以下是对这些技术和Spring MVC整合的详细说明: 1. **Jackson**: Jackson是一个高性能的JSON库,支持...

    XML开发包xstream.zip

    此外,与JAXB相比,XStream的API更简洁,更易于理解和使用。 **应用场景:** 1. 数据持久化:将Java对象保存到XML文件,便于数据备份或跨进程通信。 2. Web服务:在RESTful API中,XML作为数据交换格式。 3. 配置...

    xml操作之xstream

    尽管XStream不能像DOM或JAXB那样对生成的XML结构进行深度定制,但它简化了对象到XML的映射过程,使得代码更加简洁。 下面我们将详细探讨XStream的主要功能和使用方法: 1. **对象到XML转换**: 使用XStream,你...

    xstream-src

    - **与 JAXB**:虽然两者都可以将 Java 对象转换为 XML,但 JAXB 更侧重于基于注解的自动绑定,而 XStream 提供了更多的控制权和灵活性。 深入研究 XStream 的源码,开发者可以学习到如何利用反射、流处理和类型...

    JavaXml及Bean互转

    本篇将详细介绍两种常用的Java XML与Bean互转方法:XStream库和JAXB(Java Architecture for XML Binding)框架。 一、XStream库 1. **XStream简介**: XStream是一个用于Java的轻量级库,它提供了一种简单的API来...

    jibx实例

    通过这个实例,开发者可以熟悉JiBX的基本用法,理解其与传统的Java XML绑定工具(如XStream或JAXB)的区别,并学会如何在实际项目中应用JiBX来提高XML处理的效率。此外,它还提供了一个实践平台,让开发者可以尝试...

    webservice-axis2:使用 SOAP 和 Apache Axis2 (JAX-WS) 和 XStream 的 Web 服务(客户端和服务器)示例

    Axis2 支持多种协议,如 SOAP、REST、MTOM 和 SWA,以及多种数据绑定技术,如 ADB、XMLBeans、JAXB 和 JiBX。 **JAX-WS(Java API for XML Web Services)** JAX-WS 是 Java 平台上用于创建 SOAP Web 服务的标准 ...

    javabean2xml实例与jox-1.17b3.jar

    在描述中提到,可以使用其他APIs来实现类似的转换,例如JAXB(Java Architecture for XML Binding)和Apache的XStream等。但JOX的优势在于其小巧且易于理解,对于简单的对象转换任务,它可能是一个快速且有效的解决...

    Java转换xml.rar

    2. 创建XStream实例:`XStream xstream = new XStream();` 3. 配置XStream:你可以设置别名、忽略字段等,比如`xstream.alias("person", Person.class);` 4. 序列化对象:`String xml = xstream.toXML(person);` ...

    java对象转Xml

    虽然具体的代码不可见,但通常会包含创建Java对象、配置和使用JAXB或XStream实例,以及生成XML输出的步骤。 8. **产品标准化.vsd**: 这个文件名可能是一个Visio绘图文件,可能与设计数据结构、类图或者流程图有关...

    基于java的开发源码-转换xml.zip

    2. **对象与XML转换**:XStream的核心方法是`toXML()`和`fromXML()`。以下是一个简单的例子: ```java import com.thoughtworks.xstream.XStream; public class Main { public static void main(String[] args)...

    o-x-mapping测试

    7. **读写XML文件**:使用生成的Java对象,我们可以使用JAXB或XStream提供的API读取XML文件并创建相应的Java对象实例,或者将Java对象转换为XML文件进行保存。 在实际项目中,这样的映射机制对于实现数据交换、持久...

    XML动态转化为ObjectDemo

    6. **其他库**:除了JAXB,Java还有其他库可以实现XML到Object的转换,例如Apache的`XStream`和Google的`Gson`。这些库提供了不同的功能和性能,可以根据项目需求选择。 7. **性能优化**:对于大型XML文件,可以...

    基于java的转换xml.zip

    2. **初始化XStream实例**:创建XStream对象,并可以设置各种配置,如命名空间、别名等。 3. **对象到XML**:使用`toXML()`方法将Java对象转换为XML字符串。 4. **XML到对象**:使用`fromXML()`方法将XML字符串转换...

    SpringMVC 使用JSON、XML视图

    本文将详细介绍如何在SpringMVC中集成并使用JSON和XML视图,以及相关的库如json-lib、Jackson、xStream、Jibx和Jaxb2。 首先,让我们理解JSON和XML的作用。JSON(JavaScript Object Notation)是一种轻量级的数据...

    dom4j2

    6. **扩展性**:DOM4J2的设计使得它易于扩展,可以与其他XML库如JAXB、XStream等集成,也可以自定义处理逻辑。 博文链接提到的ITEYE博客文章可能深入讲解了如何使用DOM4J2进行XML操作,包括具体的代码示例和最佳...

    xml与javabean的相互转换

    除了JAXB,还可以使用DOM API手动解析XML并设置JavaBean的属性,或者使用第三方库如Apache的Digester或XStream等进行转换。 在实际应用中,我们还需要关注一些细节问题,比如XML命名空间(Namespace)的处理、XML...

    xml和bean之间的相互转换源码

    这些注解如`@XmlRootElement`、`@XmlElement`等,告诉JAXB如何映射XML元素和属性到类的字段。然后,可以使用`Unmarshaller`接口的`unmarshal()`方法将XML文档转换为Java对象。 2. **Bean到XML的转换**: 反过来,...

    如何将java对象转换成xml

    2. **JAXB使用示例**: - 首先,需要在Java类上添加JAXB注解,如`@XmlRootElement`,`@XmlElement`,`@XmlAttribute`等。 - 创建一个`Marshaller`实例,然后调用其`marshal`方法将Java对象转换为XML字符串或写入...

    spring ws1.5.8所有最新开发包及文档及实例

    Spring WS支持多种XML数据绑定框架,如JAXB、Castor、XStream和Aegis,它们用于将Java对象转换为XML和XML转换回Java对象。这些数据绑定库使得与XML的交互更加直观和高效。 3. **契约优先的Web服务**: Spring WS...

Global site tag (gtag.js) - Google Analytics