浏览器对 XML DOM 的支持
DOM2 级核心
想创建一个新的、文档元素为 <root> 的 XML 文档,可以使用如下代码:
var xmldom = document.implementation.createDocument("", "root", null);
要检测浏览器是否支持 DOM2 级 XML,可以使用下面这行代码:
var hasXmlDom = document.implementation.hasFeature("XML", "2.0");
DOMParser 类型
DOMParser 类型将 XML 字符串转换为 DOM 文档,解析 XML 步骤为:
-
创建一个 DOMParser 的实例
-
调用 parseFromString() 方法。接受两个参数:要解析的 XML 字符串和内容类型(内容类型是"text/xml")。返回的值是一个 Document 的实例
var parser = new DOMParser(); var xmldom = parser.parseFromString("<root><child/></root>", "text/xml");
DOMParser 只能解析格式良好的 XML,不能把 HTML 解析为 HTML 文档。在发生解析错误时,仍然会从 parseFromString() 中返回一个 Document 对象,但这个对象的文档元素是 <parsererror>,而文档元素的内容是对解析错误的描述
XMLSerializer 类型
XMLSerializer 类型将 DOM 文档序列化为 XML 字符串,步骤为:
-
创建一个 XMLSerializer 实例
-
将 DOM 文档传入 XMLSerializer 实例的 serializeToString()方法
var serializer = new XMLSerializer(); var xml = serializer.serializeToString(xmldom); //xmldom 为 DOM 文档
浏览器对 XPath 的支持
XPath 是设计用来在 DOM 文档中查找节点的一种手段。
DOM3 级 XPath
要确定某浏览器是否支持 DOM3 级 XPath,可以使用以下 JavaScript 代码:
var supportsXPath = document.implementation.hasFeature("XPath", "3.0");
在 DOM3 级 XPath 规范定义的类型中,最重要的两个类型是 XPathEvaluator 和 XPathResult。
- XPathEvaluator 用于在特定的上下文中对 XPath 表达式求值。这个类型有下列 3 个方法。
- createExpression(expression, nsresolver):将 XPath 表达式及相应的命名空间信息转换成一个 XPathExpression
- createNSResolver(node):根据 node 的命名空间信息创建一个新的 XPathNSResolver 对象
- evaluate(expression, context, nsresolver, type, result):在给定的上下文中,基于特定的命名空间信息来对 XPath 表达式求值