文档章节

JAXB之HelloWorld.入门小DEMO.

Credo-Zhao
 Credo-Zhao
发布于 2012/11/16 15:55
字数 486
阅读 1882
收藏 2

直接贴代码好哇...

首选是实体对象.

package org.credo;

import java.io.Serializable;

import javax.inject.Named;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

/**
 * @XmlAccessorType(XmlAccessType.FIELD)指定映射本类的所有字段
 * @XmlRootElement 用在class类的注解,常与@XmlRootElement,@XmlAccessorType一起使用.也可以单独使用,如果单独使用,需要在get方法上加@XmlElement等注解.
 * @XmlType,在使用@XmlType的propOrder 属性时,必须列出JavaBean对象中的所有XmlElement,否则会报错。
 * @author ZhaoQian
 * 
 */
@Named
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Customer")
@XmlType(name = "Customer", propOrder = { "age", "name" })
public class Customer implements Serializable {

	private static final long serialVersionUID = 1L;
	
	// 其实@XmlType已经默认会读取下面的name和age.@XmlElement在@XmlType存在的情况下,只会起到一个标识作用.
	@XmlAttribute
	int id;
	@XmlElement
	String name;
	@XmlElement
	int age;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

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

}
然后是将java对象转换为xml变相的main方法.
package org.credo;

import java.io.File;

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

/**
 *JAXB,输出一个XML文件进行交互.
 */
public class JaxbExample {
	
	@Inject Customer customer;
	
	public static void main(String[] args) {
		Customer cus=new Customer();
		cus.setId(1);
		cus.setName("Hello World!");
		cus.setAge(26);
		
		try {
			File file=new File("D:\\HelloWorld.xml");
			//初始化JAXBContext.JAXBContext类提供的JAXB API的客户端的入口点。
			//它提供一个抽象的用于管理XML / Java绑定的必要信息,以实现JAXB绑定框架行动:解组,编组和验证。
			JAXBContext jc=JAXBContext.newInstance(Customer.class);
			//将Java对象Marshal成XML内容的Marshal的初始化设置.
			Marshaller jaxbMarshaller=jc.createMarshaller();
			//output
			jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			jaxbMarshaller.marshal(cus, file);
			jaxbMarshaller.marshal(cus, System.out);
			
		} catch (JAXBException e) {
			System.out.println("output xml error!");
			e.printStackTrace();
		}
	}
	
	/**
	 * Test CDI
	 */
	public void processXml(){
		this.customer.setAge(26);
		this.customer.setId(1);
		this.customer.setName("HelloWorld");
	}
}
接着和上面反着来.
package org.credo;

import java.io.File;

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

/**
 *读取一个XML文件并输出对象.
 */
public class XMLExample {

	public static void main(String[] args) {
		File file=new File("D:\\HelloWorld.xml");
		try {
			//反着来
			JAXBContext jc=JAXBContext.newInstance(Customer.class);
			Unmarshaller unmarshaller=jc.createUnmarshaller();
			Customer cus=(Customer) unmarshaller.unmarshal(file);
			System.out.println("data:"+cus);
			System.out.println("data:"+cus.getId());
			System.out.println("data:"+cus.getName());
			System.out.println("data:"+cus.getAge());
		} catch (JAXBException e) {
			System.out.println("input xml error!");
			e.printStackTrace();
		}
		
	}

}

= =!

© 著作权归作者所有

共有 人打赏支持
Credo-Zhao
粉丝 309
博文 161
码字总数 241124
作品 0
朝阳
技术主管
私信 提问
加载中

评论(4)

Credo-Zhao
Credo-Zhao

引用来自“小小贝”的评论

引用来自“Credo”的评论

引用来自“小小贝”的评论

楼主牛B啊

滚蛋,你丫又来笑话我了......这个在OS上红薯老大写的,我学红薯的.

楼主经过深入理解红薯大大文章后,写得如些神作啊。

贝哥不要这么无耻啊.
小小贝
小小贝

引用来自“Credo”的评论

引用来自“小小贝”的评论

楼主牛B啊

滚蛋,你丫又来笑话我了......这个在OS上红薯老大写的,我学红薯的.

楼主经过深入理解红薯大大文章后,写得如些神作啊。
Credo-Zhao
Credo-Zhao

引用来自“小小贝”的评论

楼主牛B啊

滚蛋,你丫又来笑话我了......这个在OS上红薯老大写的,我学红薯的.
小小贝
小小贝
楼主牛B啊
CXF的简单使用

Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量级容器中,...

蜡笔小小小新
2015/09/26
19
0
CXF3.0.2+Spring3.2.14 Web Service入门实例二

离上次学习CXF的时间比较长了,最近一直在忙别的项目,没有时间再继续学习CXF,也就没有再写博客了!今天有点时间,再写一篇,把CXF3.0.7与spring3.2.14整合写出来。本来应该写apache-cxf-3....

jnzsf
2016/06/08
0
0
spring结合apache cxf发布web service服务

首先下载apache cxf压缩包,到apache官方网站下载。将lib目录下的jar文件都拷贝到自己的项目lib下面。这里我的项目名为cxfservice 2. 配置sring的配置文件如下: 创建webservice服务接口 pa...

linsir
2011/03/15
0
1
基于SOA 思想下的WebService实战资料分享

跟大家分享基于SOA 思想下的WebService实战(电子商务需求,分析,架构全涉及,百万数据优化) 课程讲解内容涵盖: 第1章 CXF框架快速起步(2课时) Webservice技术规则 Java-WebService技术规范...

abcfhl
2013/06/24
1K
7
1.1 wgf入门Demo教程

wgf是基于Golang的web框架 * 源码: http://github.com/walu/wgf * 微博: http://weibo.com/walu 入门Demo 本文档旨在介绍wgf的最基本的使用方法。 wgf框架源码可以放在任何GOPATH所指的地方,...

已废弃
2014/02/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JVM问题排查也不是很难--工具使用

目录 概述 环境准备 工具介绍 远程连接方式 开启JMX 工具远程连接 参考文献 概述 线上环境中,程序越来越慢,一头雾水?遇到程序经常宕机,但找不到原因?排查问题却经常记不住命令? 那是没找到好...

java_龙
7分钟前
2
0
MySQL

1、查看数据库中所有的数据表: SHOW DATABASES; 2、连接数据库: use (数据库名); 3、显示已经打开的数据库: SELECT DATABASE(); 4、创建数据表: CREATE TABLE (数据表的名字)(第...

墨冥
15分钟前
2
0
idea 设置背景色

编辑界面背景色 控制台背景色

暗中观察
16分钟前
1
0
Win10强制更新怎么关闭 彻底禁止Windows自动更新方

Win10强制更新怎么关闭 彻底禁止Windows自动更新方法 (全文) 百事数码原创 2018-07-06 17:39电脑百事网7843 + 关注 很多Win10用户来说经常会遇到这样的烦恼,电脑系统会不时的提醒自动更新,...

阿K1225
32分钟前
2
0
不用编写程序代码,送你一个爬虫程序批量采集猫眼电影票房数据

"大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对其内容进行抓取、管理和处理。 "大数据"首先是指数据体量(volumes)大,指代大型数据集,一般在1...

技术阿飞
46分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部