2025-04-12 日报 Day154

2025-04-12 日报 Day154

Yuyang 前端小白🥬

今日的鸡汤

选择所爱,爱所选择。

今日学习内容

1、JS 红皮书 P694-702 第二十二章:处理 XML

今日笔记

1、浏览器对XML DOM的支持: XML 曾一度是在互联网上存储和传输结构化数据的标准。自从有了 DOM 标准,所有浏览器都开始原生支持 XML、XML DOM 及很多其他相关技术。

  • DOM Level2 Core: DOM Level2 Core 定义了对 XML 文档的支持。它定义了一个通用的 API,允许脚本访问和操作 XML 文档。所有现代浏览器都支持 DOM Level2 Core。
  • DOMParser类型: 为把 XML 解析为 DOM 文档新增了 DOMParser 类型,后来所有其他浏览器也实现了该类型。要使用 DOMParser,需要先创建它的一个实例,然后再调用 parseFromString()方法。这个方法接收两个参数:要解析的 XML 字符串和内容类型(始终应该是”text/html”)。返回值是 Document的实例。来看下面的例子:
    1
    2
    3
    4
    5
    6
    7
    8
    let parser = new DOMParser(); 
    let xmldom = parser.parseFromString("<root><child/></root>", "text/xml");
    console.log(xmldom.documentElement.tagName); // "root"
    console.log(xmldom.documentElement.firstChild.tagName); // "child"
    let anotherChild = xmldom.createElement("child");
    xmldom.documentElement.appendChild(anotherChild);
    let children = xmldom.getElementsByTagName("child");
    console.log(children.length); // 2
    DOMParser 只能解析格式良好的 XML,因此不能把 HTML 解析为 HTML 文档。在发生解析错误时,不同浏览器的行为也不一样。
  • XMLSerializer类型: XMLSerializer 类型提供了一个将 DOM 文档序列化为 XML 字符串的方法。该方法是 serializeToString(),接收一个 Document 或 Element 实例作为参数。要序列化DOM文档,必须创建XMLSerializer 的新实例,然后把文档传给serializeToString()方法,如下所示:
    1
    2
    3
    let serializer = new XMLSerializer(); 
    let xml = serializer.serializeToString(xmldom);
    console.log(xml);
    2、浏览器对XPath的支持: XPath 是为了在 DOM 文档中定位特定节点而创建的,因此它对 XML 处理很重要。
  • DOM Level 3 XPath: DOM Level 3 XPath 规范定义了接口,用于在 DOM 中求值 XPath 表达式。要确定浏览器是否支持DOM Level 3 XPath,可以使用以下代码:
    let supportsXPath = document.implementation.hasFeature(“XPath”, “3.0”);
  • 单个节点结果: XPathResult.FIRST_ORDERED_NODE_TYPE 结果类型返回匹配的第一个节点,可以通过结果的singleNodeValue 属性获取。
  • 简单类型结果: 使用布尔值、数值和字符串 XPathResult 类型,可以根据 XPath 获取简单、非节点数据类型。这些结果类型返回的值需要分别使用 booleanValue、numberValue 和 stringValue 属性获取。对于布尔值类型,如果至少有一个节点匹配 XPath 表达式,booleanValue 就是 true;否则,booleanValue为 false。
  • 默认类型结果: 所有 XPath 表达式都会自动映射到特定类型的结果。设置特定结果类型会限制表达式的输出。
  • 命名空间支持: 对于使用命名空间的 XML 文档,必须告诉 XPathEvaluator 命名空间信息,才能进行正确求值。
    3、浏览器对XSLT的支持: 可扩展样式表语言转换(XSLT,Extensible Stylesheet Language Transformations)是与 XML 相伴的一种技术,可以利用 XPath 将一种文档表示转换为另一种文档表示。与 XML 和 XPath 不同,XSLT 没有与之相关的正式 API,正式的 DOM 中也没有涵盖它。因此浏览器都以自己的方式实现 XSLT。
  • XSLTProcessor类型: Mozilla 通过增加了一个新类型 XSLTProcessor,在 JavaScript 中实现了对 XSLT 的支持。通过使用 XSLTProcessor 类型,开发者可以使用 XSLT 转换 XML 文档,其方式类似于在 IE 中使用 XSL 处理器。自从 XSLTProcessor 首次实现以来,所有浏览器都照抄了其实现,从而使 XSLTProcessor 成了通过 JavaScript 完成 XSLT 转换的事实标准。
  • 使用参数: XSLTProcessor 还允许使用 setParameter()方法设置 XSLT 参数。该方法接收三个参数:命名空间 URI、参数本地名称和要设置的值。
  • 重置处理器: 每个 XSLTProcessor 实例都可以重用于多个转换,只是要使用不同的 XSLT 样式表。处理器的reset()方法可以删除所有参数和样式表。
    4、小结: 浏览器对使用 JavaScript 处理 XML 实现及相关技术相当支持。然而,由于早期缺少规范,常用的功能出现了不同实现。DOM Level 2 提供了创建空 XML 文档的 API,但不能解析和序列化。浏览器为解析和序列化 XML 实现了两个新类型。
     DOMParser 类型是简单的对象,可以将 XML 字符串解析为 DOM 文档。
     XMLSerializer 类型执行相反操作,将 DOM 文档序列化为 XML 字符串。
    基于所有主流浏览器的实现,DOM Level 3 新增了针对 XPath API 的规范。该 API 可以让 JavaScript针对 DOM 文档执行任何 XPath 查询并得到不同数据类型的结果。
    最后一个与 XML相关的技术是 XSLT,目前并没有规范定义其 API。Firefox最早增加了 XSLTProcessor类型用于通过 JavaScript 处理转换。
此页目录
2025-04-12 日报 Day154