XMLSerializer - 用来构造表示 DOM 树的 XML 字符串
XMLSerializer
接口提供了 serializeToString()
方法来构造表示 DOM 树的 XML 字符串。
方法
serializeToString()
返回一个字符串,表示序列化子树。
serializeToStream()
使用指定的字符集将以指定元素为根的子树序列化为字节流。
实例
将 XML 序列化为字符串
第一个基本实例仅将整个文档序列化为包含 XML 的字符串。
var s = new XMLSerializer();
var d = document;
var str = s.serializeToString(d);
saveXML(str);
它创建了一个新的 XMLSerializer
对象,然后将 Document
传递给 serializeToString()
进行序列化,它返回的 XML 等同于文档本身的内容。
将节点插入基于 XML 的 DOM 中
本实例使用 Element.insertAdjacentHTML()
方法,将序列化 Element
对象生成的 XML,作为一个新的 DOM Node
插入到文档主体中。
注意: 在现实世界中,通常应改为调用
importNode()
方法将新节点导入 DOM,然后调用以下方法之一将节点添加到 DOM 树:
Document
和Element
的append()
和prepend()
方法Node.replaceWith()
方法(用新节点替换现有节点)Document.insertAdjacentElement()
和Element.insertAdjacentElement()
方法。
因为 insertAdjacentHTML()
接受字符串而不是 Node
作为其第二个参数,所以使用 XMLSerializer
首先将节点转换为字符串。
var inp = document.createElement('input');
var XMLS = new XMLSerializer();
var inp_xmls = XMLS.serializeToString(inp); // 首先将 DOM 节点转换为字符串
// 将新创建的节点插入到文档主体中
document.body.insertAdjacentHTML('afterbegin', inp_xmls);
该代码调用 Document.createElement()
创建一个新的 <input>
元素,然后使用 serializeToString()
将它序列化为一个 XML。
完成后,将使用 insertAdjacentHTML()
将 <input>
元素添加到 DOM 中。
规范
规范 | 状态 | 备注 |
---|---|---|
DOM Parsing and Serialization XMLSerializer 的定义 |
工作草案 | - |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 12 | 支持 | 9 | 支持 | 3 |
serializeToStream | 支持 | 79 | 支持 — 20 | 不支持 | 支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 支持 | 未知 | 支持 | 支持 |
serializeToStream | 支持 | 支持 | 未知 | 支持 — 20 | 未知 | 支持 | 不支持 |