`

java学习之jaxb的学习一

阅读更多
一:jaxb是什么
jaxb是java architecture for xml binding的缩写,可以将java对象转换成xml,反之亦然!
这是帮助文档:http://docs.jboss.org/resteasy/docs/2.3.5.Final/userguide/html_single/index.html#JAXB_+_JSON_provider
我们把对象和关系数据库之间的映射称之为ORM,其实我们也可以把对象和XML之间的映射称之为OXM(Object XML Mapping) 原来JAXB是Java EE的一部分,在JDK1.6中,SUN将其放到了Java SE中,这也是SUN的一贯做法。JDK1.6中自带的这个JAXB版本是2.0,比起1.0(JSR 31)来,JAXB2(JSR 222)用JDK5的新特性Annotation来标识要作绑定的类和属性等,这就极大简化了开发的工作量。
二、jaxb应用模式
在JAVA EE 5\6中,jaxb可以很方便的与jax-rs、jax-ws集成,极大的简化了web service接口的开发工作量。

需要引入javax.xml.bind.jar,我是用myeclipse直接创建的web项目就不需要引入jar包,有自带的,所以建议创建web项目

下面是简单的demo
从javabean到xml的转换
写一个java实体类
package test.entity;

import java.util.Date;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import test.adapter.DateAdapter;

@XmlType(name="test",propOrder={"id","name","pro","date"})
@XmlRootElement(name="Test")
public class Test {
	/**
	 * 这里值的注意的地方是,我并没有设置它的xmlAccessorType,所以默认的是 
         * PUBLIC_MEMBER的,所以此时的get set方法和xmlElement不能共存  如果写了
         * xmlElement注解以后就不要再写get方法了,
	 * 如果此时既有get方法也就注解,那么会报错(2 counts of IllegalAnnotationExceptions)
	 * 所以前两个属性我设置了注解就只有set方法,而pro属性就没有注解所以get set方法都有
	 * 一般时候我都不写注解写set get方法,因为这样我从xml转到javabean的时候就可以通过
	 * get方法来取得其值了
	 */
	@XmlElement
	private String id;
	@XmlElement
	private String name;
	
	private String pro;
	
	@XmlJavaTypeAdapter(value=DateAdapter.class)
	private Date date;
	
	
	public void setId(String id) {
		this.id = id;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public String getPro() {
		return pro;
	}

	public void setPro(String pro) {
		this.pro = pro;
	}
	
	public void setDate(Date date) {
		this.date = date;
	}
	
}


然后写一个自定义的Adapter来转化时间
@XmlJavaTypeAdapter常用在转换比较复杂的对象时,如map类型或者格式化日期等。使用此注解时,需要自己写一个adapter类继承XmlAdapter抽象类,并实现里面的方法。
package test.adapter;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class DateAdapter extends XmlAdapter<String, Date>{
	private String pattern = "yyyy-MM-dd HH:mm:ss";
	SimpleDateFormat fmt = new SimpleDateFormat(pattern);
    
	@Override
	public String marshal(Date v) throws Exception {
		
		return fmt.format(v);
	}

	@Override
	public Date unmarshal(String v) throws Exception {
		
		return fmt.parse(v);
	}
	
}



最后写一个测试的类来测试这个能不能行得通:
package testApp;

import java.io.StringWriter;
import java.util.Date;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import test.entity.Test;

public class TestApp {
	public static void main(String[] args) throws JAXBException{
		Test test = new Test();
		test.setId("111");
		test.setName("test");
		test.setPro("pro");
		test.setDate(new Date());
		JAXBContext context = JAXBContext.newInstance(Test.class);
		Marshaller marshaller = context.createMarshaller();
		marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");//编码格式
		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
		marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 是否省略xm头声明信息
		StringWriter writer = new StringWriter();
		marshaller.marshal(test, writer);
		System.out.println(writer.toString());


测试结果如下:




http://www.cnblogs.com/superjt/p/3310322.html这是解析xml的地址
  • 大小: 10 KB
分享到:
评论

相关推荐

    通过JAXB实现完成java对象和xml的互相转换

    Java Architecture for XML Binding (JAXB) 是一个Java标准,它提供了在Java对象和XML文档之间进行自动转换的能力。这项技术极大地简化了XML数据处理,使得开发者可以方便地将Java对象序列化为XML,或者从XML数据中...

    一个基于java jaxb的序列化例子,非常简单易懂

    Java JAXB(Java Architecture for XML Binding)是Java平台上的一个标准组件,用于XML和Java对象之间的绑定,实现了XML的序列化和反序列化。这个技术使得开发者可以方便地将Java对象转换为XML文档,同时也可以从XML...

    java jdk1.6 新特性 jaxb2 demo

    Java JDK 1.6是Java开发工具包的一个重要版本,发布于2006年,引入了许多增强功能和新特性,极大地提升了开发效率...通过这样的示例,学习者可以深入理解JAXB的工作原理,以及它如何简化Java程序与XML数据交互的过程。

    java 使用 JAXB 将xml转换为 bean 包含xml和dto和读取文件的util类

    Java中的JAXB(Java Architecture for XML Binding)是一个用于在Java对象和XML文档之间进行映射的标准API。这个技术使得开发者可以方便地将XML数据转换为Java对象,反之亦然。在给定的压缩包文件中,可能包含了实现...

    jaxb (XML操作)

    **JAXB(Java Architecture for XML Binding)** 是Java平台中用于处理XML的一种强大的工具,它提供了将XML文档与Java对象之间的映射,从而方便XML数据的解析和生成。通过JAXB,开发者可以轻松地实现XML数据到Java...

    jaxb2 生产java类demo实例

    **Java Architecture for XML Binding (JAXB)** 是Java平台上的一个标准API,用于在XML文档和Java对象之间进行双向转换。JAXB2是JAXB的第二个主要版本,它引入了更强大的功能和改进,如注解支持,使得XML绑定更加...

    数据绑定之JAXB

    1. **JAXB架构**:了解JAXB的基本架构,包括绑定编译器(`xjc`),它将XML Schema(XSD)转换为Java类,以及Unmarshaller和Marshaller接口,它们分别负责将XML解析为Java对象和将Java对象转换为XML。 2. **注解驱动...

    最新JAXB解析XML教程

    总之,学习JAXB不仅可以帮助你理解XML与Java之间的转换机制,还能提升你在开发中处理XML数据的能力。通过深入学习和实践,你将能够熟练运用JAXB进行XML的解析和编码,提高项目开发的效率和质量。

    jaxb-ri-2.2.7

    3. **源代码**:如果包含源码(如`src`目录),开发者可以查看和学习JAXB的内部实现,或者对其进行定制和扩展。 4. **示例和教程**:可能包含演示如何使用JAXB的示例代码(如`samples`目录),这些例子可以帮助初学...

    Java学习电子书合集

    Java学习电子书合集是一个全面涵盖Java编程各个方面的资源包,包含了从基础到高级的各类教程和参考书籍。这个合集旨在帮助初学者和有经验的开发者深化对Java语言的理解,提升编程技能。 《JAVA 编程思想》是Java...

    JAXB的例子

    Java Architecture for XML Binding (JAXB) 是Java平台上的一个重要标准,它提供了一种机制,能够将XML文档与Java对象之间进行映射,实现XML数据和Java对象的无缝转换。JAXB允许开发者在Java应用中方便地处理XML数据...

    jaxb2.0英文文档

    **Java Architecture for XML Binding (JAXB) 2.0** 是一个Java标准,它提供了一种将XML数据与Java对象之间进行自动转换的机制。这个技术是Java平台企业版(Java EE)的一部分,也是Java标准版(Java SE)的一个可选...

    jaxb学习资料

    ### jaxb学习资料知识点详解 #### 一、JAXB概览 JAXB,全称为Java Architecture for XML Binding,是一种用于处理XML数据的Java API。它允许开发者将Java类与XML文档之间的转换过程自动化,从而简化了数据交换的...

    Jaxb简单例子

    **JAXB(Java Architecture for XML Binding)**是Java平台中用于XML绑定的规范,它提供了一种自动将Java对象转换为XML文档以及从XML文档还原为Java对象的方法。这个简单的例子将带你深入理解JAXB的基本用法,包括...

    JAXB的HelloWorld源码

    总结来说,JAXB是Java中处理XML的强大工具,通过学习JAXB的HelloWorld源码,新手可以快速上手,理解XML和Java对象之间的绑定,以及如何进行序列化和反序列化操作。随着对JAXB的深入理解和实践,开发人员能够更高效地...

    jaxb入门学习

    JAXB (Java Architecture for XML Binding) 是一种将XML数据与Java对象互相转换的技术。它通过编组(marshalling)和解组(unmarshalling)的过程,使得开发者能够更加方便地处理XML数据。 #### 二、JAXB的主要过程...

    JAXB.zip_jaxb

    通过分析这个"JAXB.zip_jaxb"压缩包的内容,我们可以学习到如何在NetBeans中创建和管理一个JAXB项目,理解JAXB的基本原理和用法,以及如何利用Ant进行构建和测试。这不仅有助于加深对JAXB的理解,也能够提升在实际...

    使用jaxb将XML转化为JAVA BEAN

    当一个Java对象被转换为XML时,JAXB会根据对象的属性和注解生成相应的XML元素和属性。例如,一个名为`Person`的类,包含`name`和`age`属性,可以通过以下方式标注: ```java @XmlRootElement(name = "person") ...

Global site tag (gtag.js) - Google Analytics