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文件(一)的更多相关文章

  1. 使用JAXB解析xml文件(二)

    前面一章简单演示了JAXB的用法,这个章节主要梳理一下JAXB常见的几个注解 1.@XmlRootElement 用于类级别的注解,对应xml的跟元素,常与 @XmlType 和 @XmlAccess ...

  2. 解析xml文件的几种技术与Dom4j与sax之间的对比

    一.解析xml文件的几种技术:dom4j.sax.jaxb.jdom.dom 1.dom4j dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常优秀的 ...

  3. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  4. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  5. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  6. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  7. XML:使用DOM技术解析xML文件中的城市,实现select级联选择

    中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...

  8. dom4j如何解析XML文件

    最近在 一些对xml文件的操作,下面简单写一个dom4j解析xml文件并将其封装到一个javabean中的例子,只是具有针对性的,不是通用的,仅供参考哦~~ 首先说:dom4j是一个java的XML ...

  9. java解析XML文件

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...

随机推荐

  1. 22.C++- 继承与组合,protected访问级别

    在C++里,通过继承和组合实现了代码复用,使得开发效率提高,并且能够通过代码看到事物的关系 组合比继承简单,所以在写代码时先考虑能否组合,再来考虑继承. 组合的特点 将其它类的对象作为当前类的成员使用 ...

  2. Scala Option类型

    转载自: Scala 初学者指南, 这里有一系列很棒的文章 类型 Option 可能你已经见过它在 Map API 中的使用:在实现自己的提取器时,我们也用过它, 然而,它还需要更多的解释. 你可能会 ...

  3. PM2使用心得

    PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 安装 npm install -g pm2 常用命令 $ npm i ...

  4. 《javascript设计模式与开发实践》阅读笔记(12)—— 享元模式

    享元模式 享元(flyweight)模式是一种用于性能优化的模式,"fly"在这里是苍蝇的意思,意为蝇量级.享元模式的核心是运用共享技术来有效支持大量细粒度的对象. 享元模式的核心 ...

  5. Ubuntu16.04建立本地更新源

    公司有多台Ubuntu机器,而且不能连接互联网,导致安装软件和更新都比较麻烦,需要建立一台本地更新源服务器. 1.安装apt-mirror工具 sudo apt-get install -y apt- ...

  6. Python-面向对象(一)-Day7

    Day7-面向对象基础 1一.isinstance(obj, cls) 1二.issubclass(sub, super) 1三.异常处理 11.异常基础 12.异常种类 23.异常其他结构 54.主 ...

  7. 新概念英语(1-127)A famous actoress(女演员)

    A:Can you recognize that woman, Liz ?B:I think I can, Kate. It must be Karen Marsh, the actoress.A:I ...

  8. 【深度学习】深入理解优化器Optimizer算法(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

    在机器学习.深度学习中使用的优化算法除了常见的梯度下降,还有 Adadelta,Adagrad,RMSProp 等几种优化器,都是什么呢,又该怎么选择呢? 在 Sebastian Ruder 的这篇论 ...

  9. 论文泛读·Adversarial Learning for Neural Dialogue Generation

    原文翻译 导读 这篇文章的主要工作在于应用了对抗训练(adversarial training)的思路来解决开放式对话生成(open-domain dialogue generation)这样一个无监 ...

  10. 关于CheckStyle在eclipse出现的问题

    今天在公司换了一个CheckStyle xml文件.那么我尝试直接import进去新的文件. 在我Check code的时候就爆了下面的错误 o: Failed during checkstyle c ...