使用 JDK XML 和 java对象相互转换
Unmarshaller 类能将 XML 数据转换为 Java 内容对象。
Marshaller 类能够将 Java 对象转换回 XML 数据。
package jaxb; /**
* Created by sheting on 10/17/2017
*/
public class Classroom {
private int id;
private String name;
private int grade; public Classroom() {
} public Classroom(int id, String name, int grade) {
super();
this.id = id;
this.name = name;
this.grade = grade;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getGrade() {
return grade;
} public void setGrade(int grade) {
this.grade = grade;
}
}
package jaxb; import javax.xml.bind.annotation.XmlRootElement; /**
* Created by sheting on 10/17/2017
*/
@XmlRootElement
public class Student {
private int id;
private String name;
private int age;
private Classroom classroom; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public Classroom getClassroom() {
return classroom;
} public void setClassroom(Classroom classroom) {
this.classroom = classroom;
} public Student(int id, String name, int age, Classroom classroom) {
super();
this.id = id;
this.name = name;
this.age = age;
this.classroom = classroom;
} //无参够着函数一定需要,否则JXBContext无法正常解析。
public Student() {
super();
}
}
package jaxb; import org.junit.Test; import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader; /**
* Created by sheting on 10/17/2017
*/
public class TestJaxb { @Test
public void beanToXML() {
Classroom classroom = new Classroom(1, "软件工程", 4);
Student student = new Student(101, "张三", 22, classroom); try {
JAXBContext context = JAXBContext.newInstance(Student.class);
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(student, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
} @Test
public void XMLStringToBean(){
String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>22</age><classroom><grade>4</grade><id>1</id><name>软件工程</name></classroom><id>101</id><name>张三</name></student>";
try {
JAXBContext context = JAXBContext.newInstance(Student.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Student student = (Student)unmarshaller.unmarshal(new StringReader(xmlStr));
System.out.println(student.getAge());
System.out.println(student.getClassroom().getName());
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
注意:
1、需要转换的model对象一定要添加@XmlRootElement注解,其里面的其他对象则不需要
2、需要转换的model对象一定要有不带参数的构造方法,包括该对象里面引用的对象。
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
JAXBContext 类提供到 JAXB API 的客户端入口点。它提供了管理实现 JAXB 绑定框架操作所需的 XML/Java 绑定信息的抽象,这些操作包括:解组、编组和验证。
原文:http://hbiao68.iteye.com/blog/1958413
使用 JDK XML 和 java对象相互转换的更多相关文章
- XML 和 java对象相互转换
		
XML 和 java对象相互转换 博客分类: XML 和 JSON 下面使用的是JDK自带的类,没有引用任何第三方jar包. Unmarshaller 类使客户端应用程序能够将 XML 数据转换为 ...
 - Java&Xml教程(十一)JAXB实现XML与Java对象转换
		
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换. 本文以一个简单的例 ...
 - Java&Xml教程(十一)JAXB实现XML与Java对象转换
		
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,可以帮助开发人员非常方便的將XML和Java对象进行相互转换. 本文以一个简单 ...
 - 不规矩的xml与JAVA对象互相转换的小技巧-使用Marshaller
		
摘要:将XML文档与JAVA对象互转是很常见的需求,如果XML定义很规整这很好实现.然而在现实中“不规矩”的XML可能更常见,Marshaller便无能为力了吗?下面是一个小技巧,调整一下思维便能重用 ...
 - XStream轻松转换xml和java对象
		
首先引入所需的jar: xstream-1.4.9.xpp3_min-1.1.4c.dom4j-1.6.1, 或用maven管理jar包时在pom.xml中添加: <!-- https://mv ...
 - 总结学习! xml与java对象转换 --- JDK自带的JAXB(Java Architecture for XML Binding)
		
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向 ...
 - JAXB完毕XML与Java对象的互转
		
这段时间都老忙了,甚至连周末全部人员都在赶产品的进度,想想连续上12天班,人都有点晕了! 到这会儿最终有点时间.所以准备和大家分享一下JAXB,会不会有人认为有点陌生呢?没事,这里跟大伙儿简单的描写叙 ...
 - xml-mapping xml 与 java 对象转换映射框架,像 XStream 一样优雅地读写xml
		
xml xml 是 java 实现的 xml 框架. 希望以最优雅的方式进行 xml 和 java 之间的转换处理,一行代码搞定一切. 特点 对象的和 xml 的互相映射 支持注解 @Alias 指定 ...
 - java——XML与java对象装换
		
-------------------------------Dog类--------------- publicclass Dog implements Serializable{ privates ...
 
随机推荐
- VirtualBox 虚拟机磁盘空间不够用,增大空间方法(这里以MAC为例)
			
开始在Virtualbox 上,安装MAC系统的时候只分配了20G的空间,随着Xcode 开发软件安装的东西多了,比如:IOS 的Simulator 的各种版本,4.3,5.0,6.0 加起来要到少要 ...
 - 启停无线网卡bat脚本
			
@echo off color 2 title 启停无线网卡 echo 启动无线网卡=======>按1键 echo 关闭无线网卡=======>按2键 set /p n= if /i & ...
 - Java内存区域和对象的创建
			
文章绝大部分内存摘抄自<深入理解Java虚拟机>,结合了小部分个人理解如果有什么错误,还望指出,如果涉及到侵权,联系博主,立马删除,再次感谢<深入理解Java虚拟机>的作者-周 ...
 - Java基础(五)面对对象
			
一.面向对象 面向对象 : 就是一种编程思想 1.类和对象 类是指描述一类事物,或者看成是一个分类,可以把类看作构造对象的模板. 对象是指具体的个体(也叫实例-instance).创建对象使用 new ...
 - golang 生成图表
			
golang 支持生产图片的源码在下面地址可以看到: https://github.com/vdobler/chart 这个项目 的 example 目录下编译后,执行下面命令就可以生产所有它支持的图 ...
 - cocos-creator 脚本逻辑-2
			
1.预制体 1)节点操作 Cc.find(‘node-1’) 获取节点 全局事件 作用于 canvas this.node.destroy() 删除节点(从内存中删除) 添加删除获取节点或组件 let ...
 - JS原型链继承
			
继承普通版 继承逻辑上都差不多,普通版调用方式比较繁琐,不利于反复大量的使用: (function (){ //创建一个人员类 function Person(name){ this.name = n ...
 - 警告: The web application [ROOT] appears to have started a thread named [Thread-48] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
			
1. 问题描述 tomcat跑web项目(其中依赖java项目) 出现大量上述警告 项目起不来 关键字 memory leak 内存泄漏 2. 解决方案 难道是程序写的有问题? 最终 将tomcat ...
 - bzoj2119 股市的预测
			
传送门 感觉智商莫名其妙的就变低了……写这题的时候死活想不出来…… 做法其实不难…… 题目要求形如ABA的串的个数,我们可以枚举A的长度,利用标记关键点的方法统计答案.设枚举到的答案为k,每k个点标记 ...
 - js权威指南学习笔记(三)语句
			
1.声明语句 如果用var声明的变量没有初始化,那么这个变量的值会被初始化为undefined. 函数声明语句的语法如下: 4 4 1 console.log(func ...