如何在Javascript中深度克隆XMLDocument对象?

时间:2017-11-22 12:30:55

标签: javascript angularjs xml web

我正在创建一个将XML文件解析为XMLDocument对象的工具。我使用xml解析器的浏览器实现,例如:

new DOMParser().parseFromString(text,"text/xml");

出于某种原因,我应该在另一个变量中拥有当前XMLDocument对象的副本。

问题是 - 如何深度克隆已解析的xml对象

谢谢!

1 个答案:

答案 0 :(得分:1)

您使用的cloneNode(true) Document继承自Node

var d2 = d.cloneNode(true);

示例:

var d = new DOMParser().parseFromString(
  "<root><x><y></y></x></root>",
  "text/xml"
);
// Prove it's a deep clone by removing `y` from `x`:
console.log("d before", d.documentElement.firstChild.children.length);
var x = d.documentElement.firstChild;
var d2 = d.cloneNode(true);
x.removeChild(x.firstChild);
console.log("d after", d.documentElement.firstChild.children.length);
console.log("d2 after", d2.documentElement.firstChild.children.length);