资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
浏览器中操作 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 时 JgerMonkey 引擎也被添加进来与 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 双接口。COM 对象必须显示的调用。而自动化对象可以隐式的调用。1) 老版本的 XML 解析器获取方法:(msxml v2.0)var xmlDom = new ActivexObject(“Microsoft.XMLDOM”);或者var xmlDom = new ActiveXObject(“Msxml.DOMDocument”);2) msxml v3.0 版本var xmlDom = new ActiveXObject(“Msxml2.DOMDocument”);或var xmlDom = new ActiveXObject(“Msxml2.DOMDocument.3.0”);3) msxml v4.0 版本var xmlDom = new ActiveXObject(“Msxml2.DOMDocument.4.0”);4) msxml v5.0 版本var xmlDom = new ActiveXObject(“Msxml2.DOMDocument.5.0”);5) msxml v6.0 版本var xmlDom = new ActiveXObject(“Msxml2.DOMDocument.6.0”);msxml v6.0 是 IE 浏览器中最新版本的 XML 解析器。2.1.1.2 FireFox、Safari、Opera以上浏览器对于 XML 的 DOM 解析提供了内核实现,因此无需从外部加载控件。获取 XML 的 DOM 解析对象的方法:document.Implementation2.1.1.3 ChromeChrome 浏览器出于安全的考虑,无法加载本地的 XML 文档。2.1.2 加载 XML 文档2.1.2.1 IE或 xmlDom.async 用来设定下载 XML 文档时,是否应当被同步处理 设置为 true 时,在使用 load 加载 XML 文档完成之前,会将控制权交回给调用load 的主调程序。 设置为 false 时,控制权必须在 load 加载 XML 文档完成之后,才会交还给主调程序。 xmlDom.load(xmlFile) 用来加载以 URL、文件路径等指定的 XML 文件。 xmlDom.loadXML(xmlFile) 用来加载以字符串方式,加载 XML 文档片段。2.1.2.2 FireFox、safari、Opera document.implementation 是 FireFox 实现的 DOM 解析对象。 createDocument(namespaceURI, qualifiedNameStr, DocumentType) namespaceURI:为文档创建的根元素的命名空间的唯一标识符。如果没有命名空间,则为 null。 qualifiedNameStr:为文档创建的根元素的名称。如果 namespaceURI 不为 null,该名称应该包括命名空间前缀和冒号。 DocumentType:新创建的 Document 对象的 DocumentType 对象。如果没有想得到的 DocumentType 对象,则为 null。2.1.2.3 兼容 IE、FireFox、safari、Opera 的加载 XML 文档或者或者2.2 通过 XMLHttpRequest 对象加载服务器端 XML 文档XMLHttpRequest 对象用来向服务器建立连接,定义数据请求,并处理返回数据。在Firefox、Opera、safari、Chrome 和 IE 7 以上版本中都实现了 XMLHttpRequest 对象。在 IE 7之前的版本需要使用插件方式加载 XMLHTTP 对象获得相似功能。所有浏览器都需要使用HTTP 协议向 web 服务器发出数据请求来获取网页内容,因此使用 XMLHttpRequest 对象来请求并加载服务器端的 XML 文档都是可行的。XMLHttpRequest 对象是 Ajax 的核心技术,已达到异步数据访问和处理的目的。2.2.1 实例化 XMLHttpRequest 对象而对于 IE 7 之前的 IE 浏览器,则不能使用上述方式实例化 XMLHttpRequest 对象,而要使用以下方式进行。因此为了兼容 IE 7 以前版本的 IE 浏览器,可以采用以下兼容的方式来实例化(虽然 IE 已经更新到 IE 10 了,但不能保证没有网页浏览者可能仍然在使用 IE 6) 。或2.2.2 打开一个新的连接2.2.2.1 方法:XMLHttpRequest.open() 功能:初始化 HTTP 请求参数 参数:open(”method”,”url”,async,username,password) 说明:method 和 url 参数是必须给出的, async、username 和 password 是可选的。 method:HTTP 方法,包括 GET、POST 等,使用时需要加引号包含; url:是向服务器请求的数据内容定位符; async:表示请求是异步还是同步的,如果设置为 false,则表示同步的,如果省略或设置为 true,则表示是异步请求。 username 和 password:提供 url 指向数据的访问授权进行认证。2.2.2.2 方法:XMLHttpRequest.send() 功能:发送 HTTP 请求 参数:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号