admin管理员组

文章数量:1530517

2024年6月25日发(作者:)

浏览器中操作XML文档

1. 环境描述

 常见浏览器类型:IE、FireFox、Chrome、Safari、Opera

 XML解析器:浏览器中一般都以插件或本地实现的方式包含了一种XML parser。

 浏览器中操作XML的主要编程语言:JavaScript(ECMAScript),浏览器都自带了JavaScript

的引擎。

 操作XML的编程接口:JavaScript中实现了DOM的编程接口。

1.1 浏览器内核:

1.1.1 Trident内核(IE 内核)

Trident内核是IE浏览器使用的内核,该内核程序在1997年的IE4中首次被采用,是微

软在Mosaic代码的基础之上修改而来的,并沿用到目前的IE10。Trident实际上是一款开放

的内核,其接口内核设计的相当成熟,因此才有许多采用IE内核而非IE的浏览器涌现(如:

360浏览器、Maxthon、The World、TT、GreenBrowser、AvantBrowser等)。此外,为了方便

也有很多人直接简称其为IE内核。

由于IE本身的“垄断性”而使得Trident内核的长期一家独大,微软很长时间都并没有

更新Trident内核,这导致了两个后果:一是Trident内核曾经几乎与W3C标准脱节(2005

年),二是Trident内核的大量 Bug等安全性问题没有得到及时解决,然后加上一些致力于

开源的开发者和一些学者们公开自己认为IE浏览器不安全的观点,也有很多用户转向了其

他浏览器,Firefox和Opera就是这个时候兴起的。非Trident内核浏览器的市场占有率大幅

提高也致使许多网页开发人员开始注意网页标准和非IE浏览器的浏览效果问题。

IE浏览器中的JavaScript被称为JScript,虽然早年JScript与人们谈到的JavaScript有着很

大的不同,但是随着W3C的WEB标准化进程,JScript与JavaScript的差别越来越少,可以

说90%以上都基本相同。IE 9中使用的JavaScript引擎为Chakra(中译:查克拉),该引擎在很

大程度上改善了IE浏览器对于JavaScript脚本执行性能。

1.1.2 Gecko(FF内核)

Gecko是Netscape 4开始采用的内核,后来的Mozilla FireFox(火狐浏览器) 也采用了该

内核,Gecko的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为

其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko内核的浏览

器也很多,这也是Geckos内核虽然年轻但市场占有率能够迅速提高的重要原因。

事实上,Gecko引擎的由来跟IE不无关系,前面说过IE没有使用W3C的标准,这导致

了微软内部一些开发人员的不满;他们与当时已经停止更新了的 Netscape的一些员工一起

创办了Mozilla,以当时的Mosaic内核为基础重新编写内核,于是开发出了Geckos。不过事

实上,Gecko 内核的浏览器仍然还是Firefox (火狐) 用户最多,所以有时也会被称为Firefox

内核。此外Gecko也是一个跨平台内核,可以在Windows、 BSD、Linux和Mac OS X中使用。

FireFox采用使用JavaScript引擎是SpiderMonkey,之后在FireFox 3.5版本开始加入了

TraceMonkey引擎作为SpiderMonkey的JavaScript的JIT编译引擎,大大提高了编译效能;

而在FireFox 4.0时JägerMonkey引擎也被添加进来与TraceMonkey引擎对JavaScript采取组

合编译,直到FireFox 11.0之后TraceMonkey最终被停止使用。在2013年发布的FireFox 18.0

中将IonMonkey引擎作为JavaScript的默认编译引擎。

1.1.3 Webkit内核

Webkit是苹果公司自己的内核,也是苹果的Safari浏览器使用的内核。Webkit引擎包

含WebCore排版引擎及JavaScriptCore解析引擎,均是从KDE的KHTML及KJS引擎衍生而来,

它们都是自由软件,在GPL条约下授权,同时支持BSD系统的开发。所以Webkit也是自由

软件,同时开放源代码。在安全方面不受IE、Firefox的制约,所以Safari浏览器在国内还是

很安全的。

限于Mac OS X的使用不广泛和Safari浏览器曾经只是Mac OS X的专属浏览器,这个内

核本身应该说市场范围并不大;但似乎根据最新的浏览器调查表明,该浏览器的市场甚至已

经超过了Opera的Presto了。当然这一方面得益于苹果转到x86架构之后的人气暴涨,另外

也是因为Safari 3终于推出了Windows版的缘故吧。Mac下还有OmniWeb、Shiira等人气很

高的浏览器。

google的chrome、360极速浏览器以及搜狗浏览器高速模式也使用webkit作为内核。

WebKit内核在手机上的应用也十分广泛。

Chrome浏览器采用的JavaScript引擎是由丹麦Google开发的V8。

2. 加载XML文档

加载XML文档到内存中构造一棵DOM文档树,这个工作主要由浏览器包含的XML

parser解析器完成,这个包含在浏览器中的XML parser必须支持DOM的解析方法。

由于不同浏览器所包含的XML parser方式不尽相同,因此在XML文档加载时,要考虑

到不同浏览器之间的兼容性。

2.1本地加载XML文档

2.1.1获取浏览器的XML解析器

2.1.1.1 IE

在IE浏览器中XML解析器是以COM插件对象方式提供的,而不是包含在IE浏览器核

心之中的。因此需要使用ActivexObject进行构造实例化解析器的Automation对象实例。

说明:

COM对象支持IUnknown接口,Automation对象支持IUnknown以及IDispatah双接口。

本文标签: 浏览器内核引擎使用文档