XML 和 java对象相互转换
下面使用的是JDK自带的类,没有引用任何第三方jar包。
Unmarshaller 类使客户端应用程序能够将 XML 数据转换为 Java 内容对象树。
备注:marshal(序列化、排列、整理)
Marshaller 类使客户端应用程序能够将 Java 内容树转换回 XML 数据。
- package hb.jaxb;
- public class Classroom {
- private int id;
- private String name;
- private int 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;
- }
- public Classroom(int id, String name, int grade) {
- super();
- this.id = id;
- this.name = name;
- this.grade = grade;
- }
- public Classroom() {
- super();
- }
- }
- package hb.jaxb;
- import javax.xml.bind.annotation.XmlRootElement;
- @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();
- }
- }
注意:
1、需要转换的model对象一定要添加@XmlRootElement注解,其里面的其他对象则不需要
2、需要转换的model对象一定要有不带参数的构造方法,包括该对象里面引用的对象。
- package hb.jaxb;
- import java.io.StringReader;
- import javax.xml.bind.JAXBContext;
- import javax.xml.bind.JAXBException;
- import javax.xml.bind.Marshaller;
- import javax.xml.bind.Unmarshaller;
- import org.junit.Test;
- 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();
- }
- }
- }
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 绑定信息的抽象,这些操作包括:解组、编组和验证。
XML 和 java对象相互转换的更多相关文章
- 使用 JDK XML 和 java对象相互转换
Unmarshaller 类能将 XML 数据转换为 Java 内容对象. Marshaller 类能够将 Java 对象转换回 XML 数据. package jaxb; /** * Created ...
- 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 ...
- java——XML与java对象装换
-------------------------------Dog类--------------- publicclass Dog implements Serializable{ privates ...
- JAXB完毕XML与Java对象的互转
这段时间都老忙了,甚至连周末全部人员都在赶产品的进度,想想连续上12天班,人都有点晕了! 到这会儿最终有点时间.所以准备和大家分享一下JAXB,会不会有人认为有点陌生呢?没事,这里跟大伙儿简单的描写叙 ...
- json、xml和java对象之间的转化
其实从面相对象的角度来理解这个问题,就会很清晰.java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处 ...
- 使用XStream是实现XML与Java对象的转换(6)--持久化
九.持久化 在第八节的示例中,当我们操作一组对象时,我们可以指定Writer.OutputStream来写出序列化后的XML数据,我们还可以指定Reader.InputStream来读取序列化后的XM ...
随机推荐
- Linux 内存管理之highmem简介
一.Linux内核地址空间 一般来说Linux 内核按照 3:1 的比率来划分虚拟内存(X86等):3 GB 的虚拟内存用于用户空间,1GB 的内存用于内核空间.当然有些体系结构如MIPS使用2:2 ...
- 偏置方差分解Bias-variance Decomposition
http://blog.csdn.net/pipisorry/article/details/50638749 偏置-方差分解(Bias-Variance Decomposition) 偏置-方差分解 ...
- 【转载】2015 Objective-C 三大新特性 | 干货
Overview 自 WWDC 2015 推出和开源 Swift 2.0 后,大家对 Swift 的热情又一次高涨起来,在羡慕创业公司的朋友们大谈 Swift 新特性的同时,也有很多像我一样工作上依然 ...
- Linux搭建GIT 使用Eclipse创建并上传Git项目 EGit操作
Linux搭建Git 1. gitblit服务器文档 http://gitblit.com/setup_go.html 2. 安装jdk 参考 http://blog.csdn.net/jerome_ ...
- Vi/Vim 替换使用方法
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian 为 s ...
- OpenCV stereo matching BM 算法
一直找不到opencv stereo matching的根据和原理出处,下面这个文章贴了个链接,有时间看看: Basically OpenCV provides 2 methods to calcul ...
- uploadify在火狐下上传不了的解决方案,java版(Spring+SpringMVC+MyBatis)详细解决方案
由于技术选型的原因,在一个产品中,我选择了uploadify,选择它的原因是它有完善的技术文档说明(http://www.uploadify.com/documentation/),唯一不足的是 ...
- 09_Android中ContentProvider和Sqllite混合操作,一个项目调用另外一个项目的ContentProvider
1. 编写ContentPrivider提供者的Android应用 清单文件 <?xml version="1.0" encoding="utf-8"? ...
- log4xx/log4j异步日志配置示例
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration S ...
- Lucene 自动补全
package com.pera.suggestion; import java.io.IOException; import java.io.Reader; import java.util.Arr ...