文档章节

JAXB之HelloWorld.入门小DEMO.

Zhao-Qian
 Zhao-Qian
发布于 2012/11/16 15:55
字数 486
阅读 1719
收藏 2
点赞 1
评论 4

直接贴代码好哇...

首选是实体对象.

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();
		}
		
	}

}

= =!

© 著作权归作者所有

共有 人打赏支持
Zhao-Qian
粉丝 309
博文 157
码字总数 237336
作品 0
朝阳
高级程序员
加载中

评论(4)

Zhao-Qian
Zhao-Qian

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

引用来自“Credo”的评论

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

楼主牛B啊

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

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

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

引用来自“Credo”的评论

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

楼主牛B啊

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

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

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

楼主牛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
动态服务器 webcppd 1.0.1,精简服务器代码

动态服务器 webcppd 1.0.1发布了。 webcppd是基于C++ 编程框架Poco 开发的一款高性能HTTP服务器,它通过插件加载来响应web请求并完成计算。 它约定了一套简单实用地插件式web开发流程,能够极...

所以呢
2016/08/29
2.6K
17
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
JAXB不能反序列化成子类对象的问题

使用JDK7内置的JAXB-RI 去反序列化一段xml: tom301a1a 对应的POJO类是Person , Student父子两个类: @XmlRootElement(name="person")@XmlAccessorType(XmlAccessType.FIELD)public class Pe......

Diablo.Wu
2015/06/11
1K
1
CXF 搭建Webservice

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

dengxin919820
06/28
0
0
OSGI学习手册

1 概述 本文是关于OSGI学习的一些资源介绍, 基本的脉络是按照自己的学习进程来的, 希望对进入OSGI学习的人有所启发。 本人具备的学习基础有: 1. Java RCP开发经验, 这个并不是必须, 实质上学...

晨曦之光
2012/03/09
222
0
python入门(二)数据库操作

1、项目结构 2、install app 编辑settings.py,新增hello app 3、设置数据库 init.py settings.py 3、models.py 4、新建migrations文件夹 这一步很关键,不然初始化数据库的时候无法成功。 ...

漂泊者及其影子
2016/10/02
46
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android LogUtil 日志优化 调试的时候打印 点击跳转

打印日志的时候,可以点击跳转 LogUtil.java public class LogUtil { private static boolean IS_DEBUG = BuildConfig.DEBUG; public static void i(String tag, String message) {......

Jay_kyzg
16分钟前
0
0
人工智能你必须掌握的32个算法(二)归并排序算法

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子...

木头释然
19分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
42分钟前
1
0
流利阅读笔记27-20180716待学习

生了娃照样能打,两位母亲温网会师 Lala 2018-07-16 1.今日导读 现今在生儿育女后回归事业的母亲们已经非常多见,但是很少有人想到,以高强度运动与竞争激烈为特色的竞技体育项目也会有 work...

aibinxiao
43分钟前
5
0
Guava 源码分析(Cache 原理【二阶段】)

前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。 文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。 在开始之前...

crossoverJie
55分钟前
0
0
OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
669
19
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部