💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# XML DOM 替换节点 replaceChild() 方法替换指定节点。 nodeValue 属性替换文本节点中的文本。 ## 尝试一下 - 实例 下面的实例使用 XML 文件 [books.xml](images/books.xml)。 函数 [loadXMLDoc()](dom-loadxmldoc.html),位于外部 JavaScript 中,用于加载 XML 文件。 [替换元素节点](/try/try.php?filename=try_dom_replacechild) 本例使用 replaceChild() 来替换第一个 &lt;book&gt; 节点。 ``` <!DOCTYPE html> <html> <head> <script src="loadxmldoc.js"> </script> </head> <body> <script> xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement; //create a book element, title element and a text node newNode=xmlDoc.createElement("book"); newTitle=xmlDoc.createElement("title"); newText=xmlDoc.createTextNode("A Notebook"); //add the text node to the title node, newTitle.appendChild(newText); //add the title node to the book node newNode.appendChild(newTitle); y=xmlDoc.getElementsByTagName("book")[0] //replace the first book node with the new node x.replaceChild(newNode,y); z=xmlDoc.getElementsByTagName("title"); for (i=0;i<z.length;i++) { document.write(z[i].childNodes[0].nodeValue); document.write("<br>"); } </script> </body> </html> ``` [替换文本节点中的数据](/try/try.php?filename=try_dom_replacedata2) 本例使用 nodeValue 属性来替换文本节点中的数据。 ``` <!DOCTYPE html> <html> <head> <script src="loadxmldoc.js"> </script> </head> <body> <script> xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; document.write(x.nodeValue); x.nodeValue="Easy Italian"; document.write("<br>"); document.write(x.nodeValue); </script> </body> </html> ``` ## 替换元素节点 replaceChild() 方法用于替换节点。 下面的代码片段替换第一个 &lt;book&gt; 元素: ## 实例 ``` xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.documentElement; //create a book element, title element and a text node newNode=xmlDoc.createElement("book"); newTitle=xmlDoc.createElement("title"); newText=xmlDoc.createTextNode("A Notebook"); //add the text node to the title node, newTitle.appendChild(newText); //add the title node to the book node newNode.appendChild(newTitle); y=xmlDoc.getElementsByTagName("book")[0] //replace the first book node with the new node x.replaceChild(newNode,y); ``` 实例解释: 1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中 2. 创建一个新的元素节点 &lt;book&gt; 3. 创建一个新的元素节点 &lt;title&gt; 4. 创建一个新的文本节点,带有文本 "A Notebook" 5. 向新元素节点 &lt;title&gt; 追加这个新文本节点 6. 向新元素节点 &lt;book&gt; 追加这个新元素节点 &lt;title&gt; 7. 把第一个 &lt;book&gt; 元素节点替换为新的 &lt;book&gt; 元素节点 ## 替换文本节点中的数据 replaceData() 方法用于替换文本节点中的数据。 replaceData() 方法有三个参数: * offset - 在何处开始替换字符。offset 值以 0 开始。 * length - 要替换多少字符 * string - 要插入的字符串 ## 实例 ``` xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; x.replaceData(0,8,"Easy"); ``` 实例解释: 1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中 2. 获取第一个 &lt;title&gt; 元素节点的文本节点 3. 使用 replaceData 方法把文本节点的前 8 个字符替换为 "Easy" ## 使用 nodeValue 属性代替 用 nodeValue 属性来替换文本节点中数据会更加容易。 下面的代码片段将用 "Easy Italian" 替换第一个 &lt;title&gt; 元素中的文本节点值: ## 实例 ``` xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; x.nodeValue="Easy Italian"; ``` 实例解释: 1. 使用 [loadXMLDoc()](dom-loadxmldoc.html) 把 "[books.xml](images/books.xml)" 载入 xmlDoc 中 2. 获取第一个 &lt;title&gt; 元素节点的文本节点 3. 使用 nodeValue 属性来更改这个文本节点的文本 您可以在[改变节点](dom-nodes-set.html)这一章中阅读更多有关更改节点值的内容。