获取xml⾥⾯的值_XML解析详解-四种解析⽅式
⼀、XML 概念
XML 是⼀种通⽤的数据交换格式,它的平台⽆关性、语⾔⽆关性、系统⽆关性、给数据集成与交互带来了极⼤的⽅便。XML 在不同的语⾔环境中解析⽅式都是⼀样的,只不过实现的语法不同⽽已。
⽰例 XML ⽂档:
⽰例 XML ⽂档:
<?xml version="1.0" encoding="UTF-8"?>
⼆、XML 的四种解析⽅式
XML 的解析⽅式分为四种:1、DOM 解析;2、SAX 解析;3、JDOM 解析;4、DOM4J 解析。其中前两种属于基础⽅法,是官⽅提供的平台⽆关的解析⽅式;后两种属于扩展⽅法,它们是在基础的⽅法上扩展出来的,只适⽤于 Java 平台。
四种解析⽅式所的 jar 包下载地址:
四种解析⽅式所的 jar 包下载地址:
DOM:在现在的 Java JDK ⾥都⾃带了,⽆需再导包。
DOM:
SAX(sax.jar):
SAX(sax.jar):sourceforge/projects/sax/
JDOM(jdom.jar):/downloads/index.html
JDOM(jdom.jar):
DOM4J(dom4j.jar):
DOM4J(dom4j.jar):sourceforge/projects/dom4j/
1、DOM 解析
DOM 的全称是 Document Object Model,即⽂档对象模型。在应⽤程序中,基于 DOM 的 XML 分析器将⼀个 XML ⽂档转换成⼀个对象模型的集合(通常称 DOM 树),应⽤程序正是通过对这个对象模型的操作,来实现对 XML ⽂档数据的操作。通过 DOM 接⼝,应⽤程序可以在任何时候访问 XML ⽂档中的任何⼀部分数据,因此,这种利⽤ DOM 接⼝的机制也被称作随机访问机制。
DOM 接⼝提供了⼀种通过分层对象模型来访问 XML ⽂档信息的⽅式,这些分层对象模型依据 XML 的⽂档结构形成了⼀棵节点树。⽆论XML ⽂档中所描述的是什么类型的信息,即便是制表数据、项⽬列表或⼀个⽂档,利⽤ DOM 所⽣成的模型都是节点树的形式。也就是说,DOM 强制使⽤树模型来访问 XML ⽂档中的信息。由于 XML 本质上就是⼀种分层结构,所以这种描述⽅法是相当有效的。
DOM 树所提供的随机访问⽅式给应⽤程序的开发带来了很⼤的灵活性,它可以任意地控制整个 XML ⽂档中的内容。然⽽,由于 DOM 分析器把整个 XML ⽂档转化成 DOM 树放在了内存中,因此,当⽂档⽐较⼤或者结构⽐较复杂时,对内存的需求就⽐较⾼。⽽且,对于结构复杂的树的遍历也是⼀项耗时的操作。所以,DOM 分析器对机器性能的要求⽐较⾼,实现效率不⼗分理想。不过,由于 DOM 分析器所采⽤的树结构的思想与 XML ⽂档的结构相吻合,同时鉴于随机访问所带来的⽅便,因此,DOM 分析器还是有很⼴泛的使⽤价值的。
优点:
优点:
形成了树结构,有助于更好的理解、掌握,且代码容易编写。
解析过程中,树结构保存在内存中,⽅便修改。
缺点:
缺点:
由于⽂件是⼀次性读取,所以对内存的耗费⽐较⼤。
如果XML⽂件⽐较⼤,容易影响解析性能且可能会造成内存溢出。
以下是 DOM 解析上述 XML ⽰例的代码:
以下是 DOM 解析上述 XML ⽰例的代码:
public
2、SAX 解析
SAX 的全称是 Simple APIs for XML,也即 XML 简单应⽤程序接⼝。与 DOM 不同,SAX 提供的访问模式是⼀种顺序模式,这是⼀种快速读写 XML 数据的⽅式。当使⽤ SAX 分析器对 XML ⽂档进⾏分析时,会触发⼀系列事件,并激活相应的事件处理函数,应⽤程序通过这些事件处理函数实现对XML⽂档的访问,因⽽SAX接⼝也被称作事件驱动接⼝。
优点:
优点:
采⽤事件驱动模式,对内存耗费⽐较⼩。
适⽤于只处理XML⽂件中的数据时。
缺点:
缺点:
编码⽐较⿇烦。
很难同时访问XML⽂件中的多处不同数据。
以下是 SAX 解析上述 XML ⽰例的代码:
以下是 SAX 解析上述 XML ⽰例的代码:
public
3、JDOM 解析
特征:
特征:
仅使⽤具体类,⽽不使⽤接⼝。
API ⼤量使⽤了 Collections 类。
以下是 JDOM 解析上述 XML ⽰例的代码:
以下是 JDOM 解析上述 XML ⽰例的代码:
public
4、DOM4J 解析
使用dom4j解析xml文件特征:
特征:
JDOM的⼀种智能分⽀,它合并了许多超出基本XML⽂档表⽰的功能。
它使⽤接⼝和抽象基本类⽅法。
具有性能优异、灵活性好、功能强⼤和极端易⽤的特点。
是⼀个开放源码的⽂件
以下是 DOM4J 解析上述 XML ⽰例的代码:
以下是 DOM4J 解析上述 XML ⽰例的代码:
public
运⾏结果演⽰:
运⾏结果演⽰:
建议:
建议:
如果 XML ⽂档较⼤且不考虑移植性问题建议采⽤ DOM4J;如果 XML ⽂档较⼩则建议采⽤ JDOM;如果需要及时处理⽽不需要保存数据则考虑SAX。但⽆论如何,还是那句话:适合⾃⼰的才是最好的,如果时间允许,建议⼤家讲这四种⽅法都尝试⼀遍然后选择⼀种适合⾃⼰的即可。
注意:
四种解析⽅式不需要⼤家必须完全记忆,在⼯作中也不会经常⽤到 XML 解析。所以⼤家可以将本⽂章收藏,以后⼯作中遇到 XML 解析问题直接通过本⽂步骤进⾏解析即可。
知乎视频w ww.zhihu
希望能够帮到⼤家,有问题的可以留⾔讨论哦!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论