XML DOM 克隆节点


在线实例

下面的实例使用 XML 文件 books.xml。
函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。

复制一个节点,并把它追加到已有的节点

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <script src="loadxmldoc.js"> 
  5. </script>
  6. </head>
  7. <body>
  8.  
  9. <script>
  10. xmlDoc=loadXMLDoc("books.xml");
  11. x=xmlDoc.getElementsByTagName('book')[0];
  12. cloneNode=x.cloneNode(true);
  13. xmlDoc.documentElement.appendChild(cloneNode);
  14.  
  15. //Output all titles
  16. y=xmlDoc.getElementsByTagName("title");
  17. for (i=0;i<y.length;i++)
  18. {
  19. document.write(y[i].childNodes[0].nodeValue);
  20. document.write("<br>");
  21. }
  22. </script>
  23. </body>
  24. </html>

本例使用 cloneNode() 来复制一个节点,并把它追加到 XML 文档的根节点。

复制节点

cloneNode() 方法创建指定节点的副本。

cloneNode() 方法有一个参数(true 或 false)。该参数指示被克隆的节点是否包括原节点的所有属性和子节点。

下面的代码片段复制第一个 <book> 节点,并把它追加到文档的根节点:

实例

  1. xmlDoc=loadXMLDoc("books.xml");

    oldNode=xmlDoc.getElementsByTagName('book')[0];
    newNode=oldNode.cloneNode(true);
    xmlDoc.documentElement.appendChild(newNode);

    //Output all titles
    y=xmlDoc.getElementsByTagName("title");
    for (i=0;i<y.length;i++)
    {
    document.write(y[i].childNodes[0].nodeValue);
    document.write("
    ");
    }

输出:

  1. Everyday Italian
    Harry Potter
    XQuery Kick Start
    Learning XML
    Everyday Italian
 

实例解释:

  1. 使用 loadXMLDoc() 把 "books.xml" 载入 xmlDoc 中
  2. 获取要复制的节点
  3. 使用 cloneNode 方法把节点复制到 "newNode" 中
  4. 向 XML 文档的根节点追加新的节点
  5. 输出文档中所有 book 的所有 title