XML的解析模型

来源:互联网 发布:淘宝卖家如何设置红包 编辑:程序博客网 时间:2024/04/30 05:47

http://dxwang.blog.51cto.com/384651/277126

1.      SAXDOM
目前XML的解析主要有两大模型:SAXDOM。其中SAX是基于事件的,其基本工作流程是分析XML文档,当发现了一个新的元素时,产生一个对应事件,并调用相应的用户处理函数。这种方式占用内存少,速度快,但用户程序相应得会比较复杂。

DOM(文档对象模型),则是在分析时,一次性的将整个XML文档进行分析,并在内存中形成对应的树结构,同时,向用户提供一系列的接口来访问和编辑该树结构。这种方式占用内存大,速度往往慢于SAX,但可以给用户提供一个面向对象的访问接口,对用户更为友好。

 

2.             验证和非验证

对于一个特定的XML文档而言,其正确性分为两个层次。首先是其格式应该符合XML的基本格式要求,比如第一行要有声明,标签的嵌套层次必须前后一致等等,符合这些要求的文件,就是一个合格的XML文件,称作well-formatted。但除此之外,一个XML文档因其内容的不同还必须在语义上符合相应的标准,这些标准由相应的DTD文件或者Schema文件来定义,符合了这些定义要求的XML文件,称作valid

因此,解析器也分为两种,一种是验证的,即会跟据XML文件中的声明,用相应的DTD文件对XML文件进行校验,检查它是否满足DTD文件的要求。另一种是忽略DTD文件,只要基本格式正确,就可以进行解析。

验证的解析器通常都是比较重量级的。TinyXml不支持验证,但是体积很小,用在解析格式较为简单的XML文件,比如配置文件时,特别的合适。
 

查询速度的问题不在于XML,而在于存储XML的方式。如果是普通的文件方式,xml不适合很大数量数据的处理。比如,如果xml文件超过10M,你就必须采用SAX来处理,XMLDOM就没有办法了,但如果你存储在XML数据库里,则就要看该数据库对XML查询的支持和优化程度。

xml文件如果比较深,遍利的时间就长,可以从算法上考虑,也可以从xml文件设计上考虑。  当然更推荐用SAX,他只把需要的内容加载到内存,这样检索的速度快了,DOM需要把整个xml文件加载到内存。

 

原创粉丝点击