一 xml介绍
XML是指可扩展标记语言(eXtensible MarkupLanguage),它是一种标记语言。它被 设计的综指是描述数据(xml)而非显示数据(html)。目前遵循的是W3C在200年发布的xml1.0规范。XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。
二 XML的基本语法
文档声明:
在编写xml文档时需要先用文档声明来声明XML文档,且必须出现在第一行。
作用:告诉解析器我是XML文档
声明方法:
<?xml version=”1.0”?> 中间不要加空格,两头带”?”
当我们写好的xml文件定入内存的时候会转换为二进制保存。这个时候会查码表,记事本保存的时候是gbk,而保存的时候默认查码表用的是UTF-8,这个时候我们就可以用encoding属性(默认是uft-8)。 <?xml version=”1.0” encoding=”gbk”?>,这样可以解决乱码问题。
CDATA区
字符数据,语法:
<![CDATA[内容]]>
作用:被CDATA包围的内容都是普通的文本字符内容。
特殊字符
特殊字符 替代符号
& &
< <
> >
“ "
‘ &apos
三 XML解析方式
Dom解析
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
SAX解析
为解决DOM的问题,出现了SAX。SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少
DOM4J解析
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,Sun 的 JAXM和hibernate 也在用 DOM4J
JDOM解析
为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM文档。
四种解析方法对比:
1、【DOM】
DOM是基于树的结构,通常需要加载整文档和构造DOM树,然后才能开始工作。
优点:
a、由于整棵树在内存中,因此可以对xml文档随机访问
b、可以对xml文档进行修改操作
c、较sax,dom使用也更简单。
缺点:
a、整个文档必须一次性解析完
a、由于整个文档都需要载入内存,对于大文档成本高
2、【SAX】
SAX类似流媒体,它基于事件驱动的,因此无需将整个文档载入内存,使用者只需要监听自己感兴趣的事件即可。
优点:
a、无需将整个xml文档载入内存,因此消耗内存少
b、可以注册多个ContentHandler
缺点:
a、不能随机的访问xml中的节点
b、不能修改文档
3、【JDOM】
JDOM是纯Java的处理XML的API,其API中大量使用Collections类,
优点:
a、DOM方式的优点
b、具有SAX的Java规则
缺点
a、DOM方式的缺点
4、【DOM4J】
这4中xml解析方式中,最优秀的一个,集易用和性能于一身。
本文暂时没有评论,来添加一个吧(●'◡'●)