XMLSerializer

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

XMLSerializer接口提供serializeToString() 方法来构建一个代表 DOM 树的 XML 字符串。

方法

serializeToString()

返回 DOM 子树序列化后的字符串。

serializeToStream() 非标准 已弃用

将指定元素的每个子树按照特定的字符集序列化成字节流。

示例

把 XML 序列化为字符串

首先,最基本的例子是将整个 document 对象序列化为一个 XML 字符串。

js
var s = new XMLSerializer();
var d = document;
var str = s.serializeToString(d);
saveXML(str);

这里新建了一个 XMLSerializer 对象实例,然后将待序列化的 Document 对象实例传入返回等价 XML 的 serializeToString() 方法。

向一个基于 XML 的 DOM 对象中

本例使用 {domxref("Element.insertAdjacentHTML()")}} 方法将一个新的 DOM Node 插入 基于序列化 Document 对象创建的 XML 中。

备注: 在真实场景下,你通常应该通过调用 importNode() 方法将新节点加入 DOM 中,然后通过调用以下方法将目标节点添加到 DOM 树:

因为insertAdjacentHTML() 的第二个参数是一个字符串而不是 Node 节点对象,所以这里先要使用 XMLSerializer 将节点转换为字符串。

js
var inp = document.createElement("input");
var XMLS = new XMLSerializer();
var inp_xmls = XMLS.serializeToString(inp); // 先将一个 DOM 节点转换为字符串。

// 将新建的节点添加到 DOM 中。
document.body.insertAdjacentHTML("afterbegin", inp_xmls);

以上代码通过调用 Document.createElement() 方法新建一个 {HTMLElement("input")}} 对象 , 然后通过 serializeToString() 方法将该对象序列化为 XML.

做完以上工作之后,使用 insertAdjacentHTML() 方法将 <input> 元素加入 DOM.

规范

Specification
DOM Parsing and Serialization
# the-xmlserializer-interface

浏览器兼容性

BCD tables only load in the browser

参见