[TOC]
1、了解XML
XML,即可扩展标记语言(Extensible Markup Language),标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它和JSON都是一种数据交换格式。
作用:解析XML文档,创建XML文档。
2、什么是可扩展标记语言?
· 可扩展标记语言是一种很像超文本标记语言的标记语言。
· 它的设计宗旨是传输数据,而不是显示数据。
· 它的标签没有被预定义。您需要自行定义标签。
· 它被设计为具有自我描述性。
· 它是W3C的推荐标准。
3、解析XML文档的五种方式: 五种方法解析XML文档:Dom、SAX、JDOM、dom4j 、degister
准备xml文件
|
|
3.1、DOM
第一种:DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。
3.1.1 dom读取xml文件
读取代码如下:
|
|
3.1.2 dom方式创建xml
创建xml代码如下:
|
|
3.2 、SAX
SAX介绍
SAX的全称是Simple APIs for XML,也即XML简单应用程序接口。
与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式。
当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口。
局限性:
1. SAX分析器在对XML文档进行分析时,触发了一系列的事件,由于事件触发本身是有时序性的,因此,SAX提供的是一种顺序访问机制,对于已经分析过的部分,不能再倒回去重新处理。
即,一旦经过了某个元素,我们没有办法返回去再去访问它。
2. SAX分析器只做了一些简单的工作,大部分工作还要由应用程序自己去做。
也就是说,SAX分析器在实现时,只是顺序地检查XML文档中的字节流,判断当前字节是XML语法中的哪一部分、是否符合XML语法,然后再触发相应的事件,而事件处理函数本身则要由应用程序自己来实现。
同DOM分析器相比,SAX分析器缺乏灵活性。
优势:
然而,由于SAX分析器实现简单,对内存要求比较低,(SAX不必将整个XML文档加载到内存当中,因此它占据内存要比DOM小), 因此实现效率比较高。
对于大型的XML文档来说,通常会用SAX而不是DOM。
并且对于那些只需要访问XML文档中的数据而不对文档进行更改的应用程序来说,SAX分析器更为合适。
DefaultHandler类:
3.2.1 读取xml文件
标签的枚举类如下
|
|
将lang标签设计为一个对象
|
|
xml顺序执行的handler
|
|
读取xml
|
|
3.2.1 创建xml文件
|
|
3.3 JDom
JDOM是一个开源项目,它基于树型结构,利用Java的技术对XML文档实现解析、生成、序列化以及多种操作,用Java的数据类型来定义操作数据树的各个节点。
JDOM下载
jdom-2.0.4.jar下载: http://www.jdom.org/downloads/
3.3.1 读取xml文件
|
|
3.3.2 创建xml文件
|
|
3.4 DOM4J
dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory
dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。
3.4.1 读取xml
|
|
3.4.2 创建xml
|
|
3.5 digester
digester原来为struts中解析xml的方式,由于其比较好,被apache单独拿出变为一个小型框架。
其使用的原理为sax。