浅谈IE9 Beta中的DOMParser和XMLSerializer

添加评论 2010年10月25日

最近我们一直在谈论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("<myXML/>", "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

  1. 还没有评论.想坐沙发?
  1. 还没有 trackbacks
订阅评论