ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# XML DOM 克隆节点 ## 尝试一下 - 实例 下面的实例使用 XML 文件 [books.xml](images/books.xml)。 函数 [loadXMLDoc()](dom-loadxmldoc.html),位于外部 JavaScript 中,用于加载 XML 文件。 [复制一个节点,并把它追加到已有的节点](/try/try.php?filename=try_dom_clonenode) 本例使用 cloneNode() 来复制一个节点,并把它追加到 XML 文档的根节点。 ``` <!DOCTYPE html> <html> <head> <script src="loadxmldoc.js"> </script> </head> <body> <script> xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName('book')[0]; cloneNode=x.cloneNode(true); xmlDoc.documentElement.appendChild(cloneNode); //Output all titles y=xmlDoc.getElementsByTagName("title"); for (i=0;i<y.length;i++) { document.write(y[i].childNodes[0].nodeValue); document.write("<br>"); } </script> </body> </html> ``` ## 复制节点 cloneNode() 方法创建指定节点的副本。 cloneNode() 方法有一个参数(true 或 false)。该参数指示被克隆的节点是否包括原节点的所有属性和子节点。 下面的代码片段复制第一个 &lt;book&gt; 节点,并把它追加到文档的根节点: ## 实例 ``` 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(" "); } ``` 输出: ``` Everyday Italian Harry Potter XQuery Kick Start Learning XML Everyday Italian ``` 实例解释: 1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中 2. 获取要复制的节点 3. 使用 cloneNode 方法把节点复制到 "newNode" 中 4. 向 XML 文档的根节点追加新的节点 5. 输出文档中所有 book 的所有 title