二、XML与Java类映射JAXB
来源:互联网 发布:java编程思想视频网盘 编辑:程序博客网 时间:2024/05/17 07:49
1、什么是XML与Java类映射
在java程序中,通常XML数据文件要解析成一个Java对象,比如说这样一个XML数据文件,代码如下:
<?xml version ="1.0" enconding="UTF-8" standalone="yes"?><article> <author>Janet</author> <date>20080202</date> <email>janet@yahoo.cn</email> <title>XML</title></article>还有一个Java类Article,它是一个普通的POJO对象,代码如下:(getter,settet方法略)
public class Article{ private String title; private String author; private String email; private String date;}
现在想让XML中的<article> 元素的数据装载到Article对象中,XML中的<title>对应Java类中的title,XML中的<author>对应Java类中的author......,这种XML数据与JAVA类之间的对应关系,就是一种映射。
2、JAXB的工作原理
与Hibernate映射类似,JAXB映射主要有4个部分组成:Schema、JAXB、XML文档、JAVA对象,如图:
Schema可以看做是数据库中的表结构,Document(XML文档)是表中的一条条数据,而JAXB可以看作是Hibernate,它提供Schema到Java对象的映射,类似xxx.hbm的映射文件。
XML转换到Java对象的过程叫做unmarshal。
Java对象转换到XML的过程叫做marshal。
3、Java对象转化为XML(marshal)
在JDK6中,JAXB中的可以通过标注Annotation来映射,这样编写映射就容易多了。Article类通过标注映射后,代码如下:
import java.io.File;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Unmarshaller;public class XmlToJava {public void JAXBDemo1(){ //创建XML文档File xmlFile = new File("F:\\test.xml");//声明JAXBContext对象JAXBContext jcontext;try{//通过映射上下文关系jcontext = JAXBContext.newInstance(Article.class);//创建XML文件到JAVA对象的Unmasheller对象Unmarshaller u = jcontext.createUnmarshaller();Article article = (Article)u.unmarshal(xmlFile);System.out.println(article.getTitle()); System.out.println(article.getAuthor());System.out.println(article.getDate());System.out.println(article.getEmail());}catch(JAXBException e){e.printStackTrace();}}}
总结几个需要注意的问题:
(1)通过标注 @XmlRootElement用于标注XML的根元素。
(2)一旦类标注了根元素,那么这个类的所有属性,默认映射为根元素的子元素。
4、XML转化为Java对象(unmarshal)
import java.io.File;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;public class JavaToXml {/** * @param args */public void JAXBDemo(){//创建xml文档对象File xmlFile = new File("F:\\test.xml");//声明JAXBContext上下文对象JAXBContext jc;try{//通过指定影射的类创建上下文jc = JAXBContext.newInstance(Article.class);//通过上下文创建java转化成xml的对象MarshallerMarshaller m = jc.createMarshaller();Article article = new Article(); //创建XML中的数据article.setTitle("围城");article.setAuthor("钱锺书");article.setDate("1945");article.setEmail("qzs@sina.com");m.marshal(article,xmlFile); //将JAVA对象转化到xml中}catch(JAXBException e){e.printStackTrace();}}}
- 二、XML与Java类映射JAXB
- XML与Java类映射JAXB
- JAXB: XML 与 Java之间的映射 (OXM)
- [Java]XML与JAXB
- JAXB 实现java对象与xml之间互相转换(二)
- jaxb xml序列化与Java类的转化
- 使用JAXB类库实现JAVA对象与XML互转
- JAXB的应用之二---------Xml与多个对象的映射(聚合或组合)及注意事项
- JAXB实现xml与java对象的
- Jaxb多层 java 与 xml 转换
- Jaxb多层 java 与 xml 转换
- Java Jaxb JavaBean与XML互转
- Jaxb多层 java 与 xml 转换
- Xml与Java Object 的转换[JAXB]
- JAXB:xml与java对象互转
- JAXB与XML
- xml-xml与java对象之间的转换(jaxb)
- JAXB (1) xml<->Java
- 带与不带缓冲的I/O
- Esper的POJO事件处理
- 2014年2月20号,财经会客厅,万科王石解析李嘉诚抛售地产及预测房价即将见顶!
- C++类模板template
- ExtMvc store不能通过xtype选择器得到的办法
- 二、XML与Java类映射JAXB
- Mysql原理及主从架构
- HDU 3483 A Very Simple Problem ---矩阵快速幂
- HttpUrlContext 简单实用2
- 常见的图片格式
- ant打war包,部署并运行
- Android菜鸟的成长笔记(17)—— 再看Android中的Unbounded Service
- 关于美术大家冯先生
- 2382. Flowers Flourish from France