XMLSerializer

您正在阅读此内容的英文版本,因为该语系尚未翻译。 帮助我们翻译此文章吧!

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

方法

serializeToString()
返回DOM子树序列化后的字符串。
serializeToStream()
将指定元素的每个子树按照特定的字符集序列化成字节流。

示例

把 XML 序列化为字符串

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

 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 将节点转换为字符串.

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 Status Comment
DOM Parsing and Serialization
XMLSerializer
Working Draft

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
XMLSerializerChrome Full support YesEdge Full support YesFirefox Full support YesIE Full support 9Opera Full support YesSafari Full support 3WebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
serializeToStream
ExperimentalDeprecatedNon-standard
Chrome Full support YesEdge No support NoFirefox No support ? — 20IE No support NoOpera Full support YesSafari No support NoWebView Android Full support YesChrome Android Full support YesFirefox Android No support ? — 20Opera Android Full support YesSafari iOS No support NoSamsung Internet Android Full support Yes

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.

参见