第十八章 JavaScript 与 XML

747 阅读2分钟

浏览器对 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 表达式求值