第 18 章 JavaScript 与 XML

124 阅读2分钟

而自从 DOM 出现后,所有浏览器都内置了对 XML 的原生支持(XML DOM),同时也提供了一系列相关的技术支持。

18.1 浏览器对 XML DOM 的支持

DOM2 级是第一个提到动态创建 XML DOM 概念的规范。DOM3级进一步增强了 XML DOM,新增了解析和序列化等特性。

18.1.1 DOM2 级核心

DOM2级在document.implementation 中引入了createDocument()方法。

语法:

var xmldom = document.implementation.createDocument(namespaceUri, root, doctype);

要想创建一个新的、文档元素为<root>的 XML 文档

var xmldom = document.implementation.createDocument("", "root", null);
alert(xmldom.documentElement.tagName); //"root"
var child = xmldom.createElement("child");
xmldom.documentElement.appendChild(child);

18.1.2 DOMParser类型

为了将 XML 解析为 DOM 文档,Firefox 引入了 DOMParser 类型;在解析 XML 之前,首先必须创建一个 DOMParser 的实例,然后再调用parseFromString()方法。

var parser = new DOMParser();
var xmldom = parser.parseFromString("<root><child/></root>", "text/xml");
alert(xmldom.documentElement.tagName); //"root"
alert(xmldom.documentElement.firstChild.tagName); //"child"
var anotherChild = xmldom.createElement("child");
xmldom.documentElement.appendChild(anotherChild);
var children = xmldom.getElementsByTagName("child");
alert(children.length); //2

DOMParser 只能解析格式良好的 XML,因而不能把 HTML 解析为 HTML 文档。

18.1.3 XMLSerializer类型

在引入 DOMParser 的同时,Firefox 还引入了 XMLSerializer 类型,提供了相反的功能:将 DOM 文档序列化为 XML 字符串。

要序列化 DOM 文档,首先必须创建 XMLSerializer 的实例,然后将文档传入其serializeToString ()方法,如下面的例子所示。

var serializer = new XMLSerializer();
var xml = serializer.serializeToString(xmldom);
alert(xml);

18.1.4 IE8 及之前版本中的XML

事实上,IE 是第一个原生支持 XML 的浏览器,而这一支持是通过 ActiveX 对象实现的。为了便于 桌面应用程序开发人员处理 XML,微软创建了 MSXML 库;但微软并没有针对 JavaScript 创建不同的对象,而只是让 Web 开发人员能够通过浏览器访问相同的对象。

18.3 浏览器对 XSLT 的支持

XSLT 是与 XML 相关的一种技术,它利用 XPath 将文档从一种表现形式转换成另一种表现形式。与 XML 和 XPath 不同,XSLT 没有正式的 API,在正式的 DOM 规范中也没有它的位置。结果,只能依靠浏览器开发商以自己的方式来实现它。