`

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简单例子

    Jaxb简单例子,学习注解及java与xml的互相转换,比较基础,大家互相学习

    JAXB应用实例.zip_36ZP_gainrtu_java

    jaxb基础知识学习,初级的java学习者,可以参考这个文档学习

    JAXB学习笔记

    JAXB学习笔记 项目为了进行xml与java bean的互转,参考了各位网友的推荐,最后选型为JAXB,闲暇之余整理了一下笔记。废话不多说,上代码

    Java and XML, 3rd Edition

    全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定的Java架构(JAXB)的相关知识。第三版还彻底重写了有关网络技术的...

    JAVA与XML.rar

    全面讲解了SAX、DOM、StAX、JDOM以及dom4j的应用程序编程接口,同时还囊括了最新版本的用于XML处理的Java应用程序编程接口(JAXP)和用于XML绑定的Java架构(JAXB)相关知识。第三版还彻底重写了有关网络技术的章节,...

    从Java走向Java+EE+.rar

    第1章 Java EE的基本知识 1 1.1 Java EE的出现及其特点 1 1.2 Java EE的分层模型和平台组成 4 1.2.1 Java EE的分层模型 4 1.2.2 Java EE的结构变形 5 1.2.3 Java EE平台的组成 7 1.3 Java EE参与人员的...

    JAXB命名空间及前缀_动力节点Java学院整理

    主要给大家介绍了关于JAXB命名空间及前缀的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    Java SE实践教程 pdf格式电子书 下载(四) 更新

    Java SE实践教程 pdf格式电子书 下载(一) 更新 http://download.csdn.net/source/2824033 Java SE实践教程 pdf格式电子书 下载(二) 更新 http://download.csdn.net/source/2824040 Java SE实践教程 pdf格式...

    J2EE(Java EE)技术总结-J2EE学习精华教程-电子书

    .....XML_Schema(文档描述与校验技术之一) .....XML_DOM(文档编程接口之一) .....XML_SAX(文档编程接口之一) .....EJB体系结构 .....会话与消息驱动Bean .....AJAX .....JAXB .....Mail(邮件) .....Security(加密...

    Java SE实践教程 pdf格式电子书 下载(一) 更新

    Java SE实践教程 pdf格式电子书 下载(一) 更新 http://download.csdn.net/source/2824033 Java SE实践教程 pdf格式电子书 下载(二) 更新 http://download.csdn.net/source/2824040 Java SE实践教程 pdf格式...

    Java SE实践教程 源代码 下载

    目录回到顶部↑第1章 进驻爪哇岛——JAVA的基本语法. 1 1.1 讲解 2 1.1.1 爪哇岛的历史与演变 2 1.1.2 爪哇岛基本生存规则 4 1.1.3 爪哇岛上新人新风尚 11 1.2 练习 15 1.2.1 搭建Java开发环境 15 1.2.2 体验...

    jackson-jar

    受java平台上各种处理xml的类库(StAX, JAXB等)启发,Jackson提供一种处理json的java类库。Jackson的目标是为开发者提供快速、准确、轻量级和用起来最爽的json处理类库。本文将概括介绍Jackson的主要功能和相关功能...

    XML Schema教程

    XML Schema 教程 XML Schema 是基于 XML 的 DTD 替代者。...在此教程中,你将学习如何在应用程序中读取和创建 XML Schema 语言,XML Schema 为何比 DTD 更加强 大,以及如何在您的应用程序中使用 XML Schema。

    javaee7-samples:JAVA EE 7 课程演示

    JAXB 2.2 - JSR 222 -项目-邮件列表 Web 服务 1.4 - JSR 109 Web 服务元数据 2.1 - JSR 181 JAX-RS 2.0 - JSR 339 -项目-邮件列表- Jersey - @gf_jersey - GitHub 上的代码 JSON-P 1.0 - JSR 353 -项目-邮件列表- ...

    代码自动生成

    现在很多比较大一点的公司基本上都会有代码自动生成,节省了几乎80%的代码量,而freemark就可以完成这一功能,生成html、java、xml、doc等文件,所以对于新手而言(像俺...(此项技术并无学习成本,俺再研究下jaxb去)。

    ToSpeak - Learn a new language-开源

    ToSpeak是一款旨在帮助用户学习某些外语的基本单词和短语的应用程序。 活动包括抽认卡,测验,字母练习和子手。 用Java和XML和JAXB编写。

    5分钟的SNOMED:易于使用的教​​程,可使用各种编程语言在5分钟内访问SNOMED API

    这是一个易于使用的教​​程,可使用SNOMED International术语服务器在5分钟内访问SNOMED API。 目录 项目结构 顶级:子模块的聚合器(按字母顺序): android-client-snomed-browser:在Android客户端中使用的示例...

Global site tag (gtag.js) - Google Analytics