使用JAXB解析xml文件(一)
1.java中解析xml的几种方式
1.1 JDK原生dom形式 原理:一次性把xml读入内存,在内存中构建成树形结构。优点:对节点操作方便,缺点:需要大量的内存空间,浪费资源
1.2 SAX形式 原理:基于事件形式,当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:相对于dom形式更快捷,占用资源少。缺点:没有持久话。事件过后,若没保存数据,那么数据就丢了。
1.3 DOM4J 它是一个开源的框架,具有性能优异、功能强大和极端易用使用的特点。
1.4 JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。
2.JAXB的几个核心对象
2.1 JAXBContext Jaxb的上下文,通过这个对象我们能拿到另外两个核心对象Unmarshaller(用于解析xml)和Marshaller(生成xml)
2.2 JAXBContext通常使用它的静态方法newInstance(Class className)来获得对象
2.3 Unmarshaller用于解析xml 通过JAXBContext的createUnmarshaller方法获得到
2.4 Marshaller用于生成xml 通过JAXBContext的createMarshaller方法获得到
3.示例代码
3.1 实体类Bean与Property
package org.lyrk.accp8.s2.chapter.xml; import javax.xml.bind.annotation.*; /**
* Created by niechen on 17/5/9.
*/
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Bean { @XmlElement
private Property property; public Property getProperty() {
return property;
} public void setProperty(Property property) {
this.property = property;
}
} @XmlAccessorType(value = XmlAccessType.FIELD)
class Property {
@XmlAttribute(name = "id")
private String id; @XmlAttribute(name = "value")
private String value; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getValue() {
return value;
} public void setValue(String value) {
this.value = value;
}
}
3.2 主函数类
package org.lyrk.accp8.s2.chapter.xml; import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.InputStream; /**
* Created by niechen on 17/5/9.
*/
public class Test { public static void main(String[] args) {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(Bean.class);//创建JAXBContext对象,注意一定要传@XmlRootElement的所标记的类的类型
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();//拿到xml解析对象
InputStream inputStream = Bean.class.getClassLoader().getResourceAsStream("bean.xml");//在classpath下读取xml的文件流
Bean bean = (Bean) unmarshaller.unmarshal(inputStream);//将xml转换成实体对象
System.out.println(bean.getProperty().getId());//输出ID属性
System.out.println(bean.getProperty().getValue());//输出value属性
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
3.3 xml文件内容
<?xml version="1.0" encoding="UTF-8"?>
<bean>
<property id="name" value="10" />
</bean>
使用JAXB解析xml文件(一)的更多相关文章
- 使用JAXB解析xml文件(二)
前面一章简单演示了JAXB的用法,这个章节主要梳理一下JAXB常见的几个注解 1.@XmlRootElement 用于类级别的注解,对应xml的跟元素,常与 @XmlType 和 @XmlAccess ...
- 解析xml文件的几种技术与Dom4j与sax之间的对比
一.解析xml文件的几种技术:dom4j.sax.jaxb.jdom.dom 1.dom4j dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常优秀的 ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- JAVA使用SAX解析XML文件
在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- XML:使用DOM技术解析xML文件中的城市,实现select级联选择
中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...
- dom4j如何解析XML文件
最近在 一些对xml文件的操作,下面简单写一个dom4j解析xml文件并将其封装到一个javabean中的例子,只是具有针对性的,不是通用的,仅供参考哦~~ 首先说:dom4j是一个java的XML ...
- java解析XML文件
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...
随机推荐
- 接触JS的变量
刚刚接触到js,写的代码都是很简单的,制单的概念也相当少,新学习的就是变量.let和const以及js的数据类型. 变量的内容有五个,我就不一一介绍了,重点在于: 在 JavaScript 中,使用变 ...
- SQL Server 实现递归查询
基础数据/表结构 Sql 语句 ;With cte(id,pid,TName)As ( Select id,pid,TName Union All Select B.i ...
- Python内置函数(3)——max
英文文档: max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the largest item in an i ...
- spring-oauth-server实践:授权方式四:client_credentials 模式的refresh_token?
spring-oauth-server入门(1-13)授权方式四:client_credentials 模式的refresh_token? 有效期内的反复申请access_token获取失效日期不变! ...
- gradle入门(1-8)gradle 的依赖查看、依赖排除和指定版本(需要验证!)
一.依赖查看 gradle dependencies 在gradle dependencies输出会有如下几种标记: 1.版本 : 唯一的依赖. 2.版本():还存在该库其他版本的依赖或者间接依赖,并 ...
- 新概念英语(1-37)Making a bookcase
What is Susan's favourite color ? A:You're working hard, Georage. What are you doing? B:I am making ...
- 新概念英语(1-23)Which glasses?
Which glasses does the man want? A:Give me some glasses please, Jane? B:Which glasses? These glasses ...
- Python/模块与包之模块
Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用 ...
- python/数据库操作补充—模板—Session
python/数据库操作补充—模板—Session 一.创建一个app目录 在models.py只能类进行进行创建表 class Foo: xx= 字段(数据库数据类型) 字段类型 字符串 Email ...
- hasattr(obj,attr) 判断前面是否有后面的属性
hasattr(obj,attr) 判断前面是否有后面的属性