文档章节

JAXB之HelloWorld.入门小DEMO.

Credo-Zhao
 Credo-Zhao
发布于 2012/11/16 15:55
字数 486
阅读 2.2K
收藏 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

Credo-Zhao

粉丝 311
博文 170
码字总数 246423
作品 0
朝阳
技术主管
私信 提问
加载中

评论(4)

Credo-Zhao
Credo-Zhao 博主

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

引用来自“Credo”的评论

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

楼主牛B啊

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

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

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

引用来自“Credo”的评论

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

楼主牛B啊

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

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

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

楼主牛B啊

滚蛋,你丫又来笑话我了......这个在OS上红薯老大写的,我学红薯的.
小小贝
小小贝
楼主牛B啊
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
2.5K
1
Java_数据交换_JAXB_用法入门

一、前言 最近有个需求,需要进行xml 与 bean 的相互转化。 使用 JAXB 可完成这个需求。 二、概述 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产...

osc_0i27cy0p
2018/08/02
6
0
【helloworld】-微信小程序开发教程-入门篇【1】

开篇导言 本节目标:旨在演示如何用开发者工具构建并运行简单的 helloworld 应用。 目标用户:无编程经验,但对微信小程序感兴趣的同学。 学习目标:开发者工具的基本使用流程,即创建、导入...

osc_wbnu3h1f
2018/04/25
2
0
基于SOA 思想下的WebService实战资料分享

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

abcfhl
2013/06/24
2.1K
7

没有更多内容

加载失败,请刷新页面

加载更多

文献速递20200524

一 文献题目:Characterizing the Causal Pathway for Genetic Variants Associated with Neurological Phenotypes Using Human Brain-Derived Proteome Data 不想看英文题目:使用人脑蛋白质......

osc_mbhfa1vl
36分钟前
9
0
【Java入门】JDK安装和环境变量配置(Win7版)

系统环境:Windows7 x64 安装JDK和JRE版本:1.8.0_191 1、下载JDK安装包 Oracle官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 选择需要下载的JDK版本...

osc_s7aj86hu
38分钟前
11
0
Android Q 指纹解锁流程

Android Q 指纹解锁流程 // Authentation Finger Schedule: (close Screen, Authentation with finger(Success))        // PhoneWindowManager        mKeyguardDelegate.onStar......

osc_0qnrwmy3
39分钟前
12
0
List的扩容机制,你真的明白吗?

一:背景 1. 讲故事 在前一篇大内存排查中,我们看到了Dictionary正在做扩容操作,当时这个字典的count=251w,你把字典玩的66飞起,其实都是底层为你负重前行,比如其中的扩容机制,当你遇到...

osc_34b9n45c
41分钟前
14
0
2020.04.12软件更新公告

原创软件区升级ComicsViewer、DjVuToy、Pdg2Pic、PdgRenamer、PdgThumbViewer

osc_6tgtqi6v
41分钟前
23
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部