java xml amp_Javaamp;Xml教程(十一)JAXB实现XML与Java对象转换
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,可以帮助开发人员非常方便的將XML和Java对象进行相互转换。
本文以一个简单的样例介绍JAXB的使用。首先我们须要了解一下JAXB经常使用的API。
JAXBContext类。是应用的入口。用于管理XML/Java绑定信息。
Marshaller接口。将Java对象序列化为XML数据。
Unmarshaller接口,将XML数据反序列化为Java对象。
@XmlType,将Java类或枚举类型映射到XML模式类型
@XmlAccessorType(XmlAccessType.FIELD)。控制字段或属性的序列化。FIELD表示JAXB将自己主动绑定Java类中的每一个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。
其它值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序
@XmlJavaTypeAdapter。使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
@XmlElementWrapper ,对于数组或集合(即包括多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
@XmlRootElement,将Java类或枚举类型映射到XML元素。
@XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
@XmlAttribute。将Java类的一个属性映射到与属性同名的一个XML属性。
我们须要进行绑定的Java Bean内容例如以下:
Employee.java
package net.csdn.beans;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
@XmlType(name = "Employee", propOrder = { "name", "age", "role", "gender" })
public class Employee {
private String name;
private String gender;
private int age;
private String role;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String toString() {
return "Employee:: Name=" + this.name + " Age=" + this.age + " Gender="
+ this.gender + " Role=" + this.role;
}
}
须要转换为Java对象的XML文件内容例如以下:
employee.xml
xml version="1.0"?>
Pankaj
29
Java Developer
Male
接下来编写測试用例代码:
TestJAXB.java
package net.csdn.test;
import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import net.csdn.beans.Employee;
import org.junit.Test;
public class TestJAXB {
@Test
public void testXml2Obj() throws Exception {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("employee.xml");
byte[] bytes = new byte[is.available()];
is.read(bytes);
String xmlStr = new String(bytes);
JAXBContext context = JAXBContext.newInstance(Employee.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Employee emp = (Employee) unmarshaller.unmarshal(new StringReader(xmlStr));
System.out.println(emp);
}
@Test
public void testObj2Xml() {
Employee emp = new Employee();
emp.setAge(10);
emp.setGender("Male");
emp.setName("Jane");
emp.setRole("Teacher");
String xmlStr = TestJAXB.convertToXml(emp,"utf-8");
System.out.println(xmlStr);
}
public static String convertToXml(Object obj, String encoding) {
String result = null;
try {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
result = writer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
执行testObj2Xml測试方法。控制台输出:
Jane
10
Teacher
Male
执行testXml2Obj測试方法。控制台输出:
Employee:: Name=Pankaj Age=29 Gender=Male Role=Java Developer
注:本例中使用JUnit4作为单元測试工具,在Eclipse中点击Window->Show View->OutLine菜单打开outline视图,分别在testXml2Obj和testObj2Xml方法上点击右键->Run As->JUnit Test就可以。
java xml amp_Javaamp;Xml教程(十一)JAXB实现XML与Java对象转换相关推荐
- flash读取xml简明实例教程
----------------------------flash读取xml简明实例教程 -------------------------- **************************** ...
- Java 自定义类加载器教程
文章目录 Java 自定义类加载器教程 loadClass findClass defineClass 函数调用过程 Java 自定义类加载器教程 除了在面试中遇到类的加载器的概率会高外,在实际的工作 ...
- Java闭关修炼64课 很适合新手学习的JAVA视频教程
Java闭关修炼64课 很适合新手学习的JAVA视频教程 java闭关修炼第一课 什么是java(1).rar java闭关修炼第一课 什么是java.rar java闭关修炼第七课 基础语言 ...
- JavaXml教程(十一)JAXB实现XML与Java对象转换
JAXB是Java Architecture for XML Binding的缩写,用于在Java类与XML之间建立映射,能够帮助开发者很方便的將XML和Java对象进行相互转换. 本文以一个简单的例 ...
- 使用JAXB将XML Schema绑定到Java类
http://blog.csdn.net/zsyspace/article/details/1786079 Java Architecture for XML Binding (JAXB) 是一项可以 ...
- java xmladapte_三步解决JAXB生成XML包含CDATA问题—JAVA编程
废话不多说,写此文档的目的就是为了帮助java开发者,解决利用JAXB生成XML时,XML中带有CDATA问题. 分三步走: 首先创建适配器类:CDataAdapter.java package co ...
- 使用JDK的JAXB将XML转化为JAVA对象,原生支持
工作中有时候会对接XML的数据,其实JDK中的JAXB已经集成了相应的API,可以将XML转化为JAVA对象 使用起来只需关注几个注解,由于是原生支持,也不用引入第三方JAR包,总体来说还算方便. p ...
- xml java jaxb_【Java】JAXB操作XML用法详解
什么是JAXB? JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.在JAX-WS(Java的W ...
- java指定sql生成xml,用Java实现可保存状态的数据库生成XML树(8)-JSP教程,Java与XML...
4.ejb-jar.xml文件 //sun microsystems, inc.//dtd enterprise javabeans 1.1//en http://java.sun.com/j2ee/ ...
最新文章
- 功能强大的打包工具 NSIS,全部用脚本搞定 使用经验总结帖(持续更新中。。。)...
- mysql 缓存监控_MySQL监控性能的一些方法总结
- 【编译原理】入门总结
- VS2010 教程:创建一个 WPF 应用程序 (第一节)
- linux引导过程和服务控制
- Java中对象的串行化(Serialization)和transient关键字
- 排队论模型(四):M / M / s 混合制排队模型
- 细等线体cass_CAD中,刚打开一个文件,细等线体显示不出来,然后换个字体后在换回细等线体才正常显示,怎么回事?...
- 运筹学学习笔记2 python-or tools 使用
- python日志:去掉noteexpress导出参考文献题录的空格
- 2021年最完善的谷歌SEO关键词调研技巧
- python 划分训练集 测试集 验证集_如何正确使用机器学习中的训练集、验证集和测试集?...
- Android编译优化系列-kapt篇
- vscode使用ssh连接远程Ubuntu服务器(记录)
- 如何向oracle中导入数据,Oracle导入导出数据库的语法_Oracle_Oracle语法_Oracle数据库_课课家...
- 猎杀对决与服务器连接中断,猎杀对决游戏常见问题汇总_猎杀对决游戏常见问题解决办法...
- Xson:Java对象序列化和反序列化工具
- 数据结构-线性表-串
- 岛国电影生物科普就是强—生命大跃进
- 中国中间相沥青基碳纤维行业研究与投资预测报告(2022版)
热门文章
- Ext3.2 beta版已发布
- Wordpress 修改 mysql 插件_史上最详细的WordPress安装教程(三):安装php 5.6及fpm、pdo、mysql等插件...
- Java:选择排序法
- java输出华氏摄氏温度转换表_Python练习题2.10输出华氏-摄氏温度转换表
- 信息学奥赛一本通 1124:矩阵加法 | OpenJudge NOI 1.8 08:矩阵加法
- 信息奥赛一本通(1839:【05NOIP提高组】谁拿了最多奖学金)
- 滑雪(信息学奥赛一本通-T1280)
- 菲波那契数列(信息学奥赛一本通-T1201)
- 4.4.5 清除变量内容
- vscode输入vue自动_使用vscode,新建.vue文件,tab自动生成vue代码模板