靠谱的软件下载站
当前位置:  IEfans/IE专区/IE相关/浅谈IE9 Beta中的DOMParser和XMLSerializer

浅谈IE9 Beta中的DOMParser和XMLSerializer

IE相关 互联网 2010-10-25 阅读(1981)
最近我们一直在谈论UI以及游览器特点。但是今天,我想通过讨论IE9 beta平台中的一些附加功能:DOMParser 和 XMLSerializer,回顾web发展历程。 它们是做什么的呢? DOMParser能够在一个XML字符串中建立文档,XMLSerializer则允许你对它再次串行化。它们一起运用使得XML向DOM转化,就像运用JSON一样简单——使它更容易使用数据传输格式的XML。更为重要的是,由DOMParser生成的节点是十分灵活的,这意味着它们可以插入或者渲染在任何网页中。附带的XMLSerializer可以将原DOM节点,甚至是HTML文本的节点,串行化为一个XML字符串。这种本源性使得我们更容易直接使用数据, 而不必先转换为HTML。 它们又是如何工作的咧? 下面是一个APIS运用的基本例子。如果需更多细节以及一生动例子,请验证测试站点上的DOMParser 和 XMLSerializer演示程序。
// Parse a string into an XML document var parser = new DOMParser(); var doc = parser.parseFromString("", "text/xml"); // Serialize any native DOM node to an XML string // (including nodes from HTML documents) var serializer = new XMLSerializer(); var xmlString = serializer.serializeToString(doc);
为了实现最佳交互式游览器兼容性, parseFromString的第二个参数应该是“text / xml”或“应用程序/ XML”。有关IE9支持的所有字符串列表,请参阅parseFromString MSDN文档。 为什么我们提及APIs? 虽然这些API是非标准的,但是最新版本的Firefox, Chrome, Safari, 和 Opera游览器都支持它。并且大量的现有站点和网络框架也都在使用。鉴于API的实际使用和跨浏览器支持,我们选择在IE9浏览器中运用API,作为我们致力实现web上“相同标记”的一部分。有了这些API,可以帮助更多的网站以相同的方式跨浏览器运行相同的代码。它们也使得运用脚本中的XML更加容易。 这与MSXML又有什么不同呢? MSXML提供一个XML结构,而这结构式独立于IE源DOM的。这意味着MSXML不能再网页中进行插入和渲染。MESXML对象也没有获得JavaScrip集成环境提供互操作性以及性能优势。当我们为了渲染,将MSXML中的元素复制到HTML中时,这种性能差异尤其明显。 这与XMLHttpRequest (XHR)有何关系? XMLHttpRequest的responseXML属性中返回的仍是一个MSXML对象,但是你可以使用DOMParser以及responseText生成一个原生XML对象来代替。
// Using DOMParser with XMLHttpRequest var parser = new DOMParser(); var xhr = new XMLHttpRequest(); ... var doc = parser.parseFromString(xhr.responseText, "text/xml"); ...
关于XML解析错误是什么? 当所提供的XML格式不正确,该parseFromString API将提示:SYNTAX_ERR DOM Exception。这时,我们就需用配合XML文档中依据HTML5规范的innerHTML错误行为处理来选择。 下一步 如前文所提到的,现在很多站点已经使用DOMPareser和XMLSerializer APIs。当运用下列程序时,确保你的网页“使用特征检测”能够正确识别这些API所支持的代码。
if(window.DOMParser) { // Code relying on DOMParser support } else { // Fallback code } if(window.XMLSerializer) { // Code relying on XMLSerializer support } else { // Fallback code }
via:ieblog

标签:IE相关IE9Beta

Copyright © 1998-2017 www.iefans.net All Rights Reserved 湘ICP备13012168号-17