在DOM中,你可以使用cloneNode方法来克隆XML节点。这个方法允许你创建一个现有节点的副本,可以选择是否克隆其子节点。以下是一个简单的JavaScript示例:
// 创建一个 XMLHttpRequest 对象(用于获取 XML 文档)
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    // 当 XML 文档加载完成时执行的回调函数
    cloneXmlNode(this);
  }
};
// 打开并发送请求
xhttp.open("GET", "your_xml_file.xml", true);
xhttp.send();

// 克隆 XML 节点
function cloneXmlNode(xml) {
  var xmlDoc = xml.responseXML;

  // 获取要克隆的节点
  var originalNode = xmlDoc.getElementsByTagName("element1")[0];

  // 克隆节点(不包括子节点)
  var clonedNode = originalNode.cloneNode(false);

  // 或者,克隆节点并包括所有子节点
  // var clonedNode = originalNode.cloneNode(true);

  // 将克隆的节点添加到文档中
  var parent = xmlDoc.getElementsByTagName("root")[0];
  parent.appendChild(clonedNode);

  // 输出添加克隆节点后的 XML 内容
  var xmlString = new XMLSerializer().serializeToString(xmlDoc);
  console.log(xmlString);

  // 保存更改(如果需要)
  // 可以将 xmlString 发送到服务器或以其他方式进行处理
}

在这个例子中,首先使用getElementsByTagName方法获取要克隆的节点(这里假设有一个名为"element1"的节点)。然后,使用cloneNode方法创建该节点的副本。cloneNode方法的参数指定是否克隆节点的子节点。如果传递true,则克隆节点及其所有子节点;如果传递false,则只克隆节点本身,不包括子节点。

最后,将克隆的节点添加到文档中,并输出修改后的XML内容。如果需要将更改保存回XML文档,可以使用XMLSerializer将修改后的文档序列化为字符串,然后进行相应的处理。在实际应用中,你可能需要将更改的文档发送到服务器或以其他方式进行处理。


转载请注明出处:http://www.zyzy.cn/article/detail/14574/XML DOM