关于xml解析

这几天对xml这特殊的语言做了下了解分析,作为代表的解析是DOM ( Document Object Model)和SAX(Simple API

for XML)。

DOM ==>>这个东西,wiki上说的历史比较有趣---browser war,这里就不谈了。

DOM它的本质其实就是一个树的遍历,我们看下下面例子:

<class>
    <student id=1>
        <name>lee</name>
        <age>20</age>
    </student>
    <student id=2>
         <name>suse</name>
         <age>21</age>
    </student>
</class>

这简单的xml可以这样看:

                          class
              +-------------||--------------+
              |                             |
           student.1                      student.2
      +-----||------+                      +----||----+
      |             |                      |          |
      name          age                    name      age
      |             |                      |          |
     lee              20                  suse       21

当DOM处理xml的时候,通过解析器,把xml文件构建成如上的树,存放在内存,可以随时对数进行读写,这样的设计

在使用上很方便实现上比较简单,但当xml文件足够的庞大时,这做法明显有缺陷。所以,另外一种代表性的xml解析

就是SAX。

SAX====>>从最初只为java设计,到普及多种语言,可以说明这种解析是高效并节省的。它不像DOM那样把整个xml

文件构建成树存放在内存,它是串流的解析。简单来说,要多少取多少;官方点来说就是,读到哪就触发到哪。


这是wiki的说法:一个实现SAX的解析器(也就是“SAX Parser”)以一个串流解析器的型式作用,拥有事件驱动API。

由使用者定义回调函数,解析时,若发生事件的话会被调用。


这个想法,和面向切面编程的思想相似。这好处也明显的减少的对内存的压力,也由于边读边触发处理,所以速度也

会比DOM解析的快。

每种方法都会有优缺点,SAX的缺点是单向性,过了就回不了头,像debug的时候,过了这个作用域就看不到参数的

信息。所以在各种应用各种要求下,DOM和SAX会分别满足各自需求。。。。


DOM的树的遍历在反复的操作下始终是不太看好,而SAX的单向性不够灵活。


对于xml的想法,

1.高度自定义的标签

2.高度自定义的作用;数据绑定,sql操作。。。

3.高度自定义的语法;

在出色的解析器下,是可以发挥极大的作用。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值