XML DOM 克隆节点

实例

下面的例子使用 XML 文件 books.xml

函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。

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

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

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

复制节点

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

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

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

  1. xmlDoc=loadXMLDoc("books.xml");
  2.  
  3. oldNode=xmlDoc.getElementsByTagName('book')[0];
  4. newNode=oldNode.cloneNode(true);
  5. xmlDoc.documentElement.appendChild(newNode);
  6.  
  7. //Output all titles
  8. y=xmlDoc.getElementsByTagName("title");
  9. for (i=0;i<y.length;i++)
  10. {
  11. document.write(y[i].childNodes[0].nodeValue);
  12. document.write("<br />");
  13. }

输出:

  1. Harry Potter
  2. Everyday Italian
  3. XQuery Kick Start
  4. Learning XML
  5. Harry Potter

例子解释:

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