package com.benx.test;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
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.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
public class JAXB2 {
public static void main(String[] args) throws JAXBException, IOException {
marshal();
unmarshal();
}
static void marshal() throws JAXBException{
JAXBContext context = JAXBContext.newInstance(Person.class);
Marshaller m = context.createMarshaller();
Person p = new Person("我是谁", "工程师", new Date());
//把生产的xml文件输出到标准流
m.marshal(p, System.out);
}
static void unmarshal() throws JAXBException{
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><person><name>我是谁</name><job>工程师</job><time>2011-06-30 10:13:59</time></person>";
ByteArrayInputStream bos = new ByteArrayInputStream(xml.getBytes());
JAXBContext context = JAXBContext.newInstance(Person.class);
Unmarshaller um = context.createUnmarshaller();
Person p2 = (Person) um.unmarshal(bos);
System.out.println();
System.out.println(p2.name);
}
}
@XmlRootElement
class Person {
@XmlElement
public String name;
@XmlElement
public String job;
@XmlElement
@XmlJavaTypeAdapter(TimeAdapter.class)
public Date time;
public Person() {
}
public Person(String name, String job, Date time) {
super();
this.name = name;
this.job = job;
this.time = time;
}
}
/**
* 时间转换
* @author jin.xiong
*
*/
class TimeAdapter extends XmlAdapter<String, Date> {
private SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* java to xml 把Date转成日期字符形式
*/
public String marshal(Date arg0) throws Exception {
Date date = (Date) arg0;
return dateformat.format(date);
}
/**
* xml to java 把字符转成日期形式
*/
public Date unmarshal(String arg0) throws Exception {
String time = (String) arg0;
return dateformat.parse(time);
}
}
分享到:
相关推荐
一个JAXB2的基础教程,教你快速运用JAXB通过XSD绑定XML和读写XML
maven-jaxb2-plugin-0.14.0 下载 maven包 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB...
JAXB2_20080829.jar (JAXB)是一种Java技术,通过这种技术你可以从XML 模式生成Java类。作为这一过程的一部分,JAXB技术还提供将XML实例文档反编组为Java对象的一个内容树,然后再将内容树编组成一个XML文档。JAXB...
java jdk1.6 新特性 jaxb2 demo
JAXB2 Maven插件欢迎使用org.jvnet.jaxb2.maven2:maven-jaxb2-plugin ,这是用于XML Schema编译的最先进且功能齐全的Maven插件。 这个Maven插件包装并增强了 并允许将XML Schema(以及WSDL,DTD,RELAX NG)编译为...
无需安装,解压后即可。jaxb-api.jar,jaxb-xjc.jar,jaxb-impl.jar,activation.jar等相关jar包在lib文件夹下。
NULL 博文链接:https://cxl2012.iteye.com/blog/1941792
JAXB2基础 JAXB2 Basics是一个项目,为提供有用的插件和工具。 文献资料 请参考文档。 JAXB2 Basics只能与JAXB / XJC 2.3.0及更高版本一起使用。 不再支持JAXB / XJC 2.2.x和更早版本。 JAXB2 Basics只能与Java ...
关于Jaxb2-Maven-Plugin 这个Maven插件使用Java API for XML Binding(JAXB)2+版来执行以下2个主要任务之一: 从XML模式(以及可选的绑定文件)生成Java类。 这是通过将工作委派给Java SDK附带的XJC工具来完成的...
、jackson、xStream、castor、jibx、jaxb2.docx
J2EE中解析XML文件的技术。最初JAXB是JavaEE的一部分,在JDK6.0中,sun将其移到了JavaSE中。在JDK6.0中,JAXB的版本中2.0,比起1.0版本,JAXB2.0基于Annotation来标识要作绑定的类和属性,从而缩减了开发工作量。
NULL 博文链接:https://endeavor416.iteye.com/blog/270507
JAXB的安装包及插件
java -jar JAXB2_20060607.jar On Windows, you can just double-click the jar file to execute. Release Notes Browse the release notes online, including what's new. Technical Support Please subscribe to...
jaxb2-rich-contract-plugin 一组JAXB / XJC插件,可从XSD生成高级合同方案 当前版本:2.1.0 该模块是JAXB2(用于XML绑定的Java API)“从XSD到Java编译器”(XJC)的几个插件的集合。 这些插件旨在为XJC生成的类...
Jabx2 开发指南 xml 转换、序列化xml
elasticsearch-suggest-plugin.zip,使用lucene fstsuggester的elasticsearchplugin for elasticsearch的lucene fstsuggester实现
jaxb2-annotate-plugin JAXB2批注插件能够向生成的源中添加或从生成的源中删除任意批注。使用概述使用绑定文件或直接在模式中注释模式将插件添加到XJC类路径。 将注释类添加到XJC类路径。 使用-Xannotate -switch...
JAXB 2 固定值插件 介绍 这个插件受到了高度启发,并共享了许多通用代码。 这是一个 XJC 插件,用于根据 xs:element 的固定属性在 XJC 生成的类中设置固定值。 记录固定属性。 请注意,JAXB 本地处理 xs:attribute ...