本章探讨在XML DOM中追加或添加节点。添加节点操作将节点附加到现有元素。它提供了一种手段:
在现有childNode之前或之后追加新的childNode
在文本节点中插入数据的范围
并添加属性节点
以下方法可用于将节点添加/附加到DOM中的元素:
appendChild()
insertBefore()
insertData()
方法appendChild()在现有childNode之后添加新的childNode。
appendChild()方法的语法如下:
Node appendChild(Node newChild)抛出DOMException appendChild (Node newChild )抛出DOMException
哪里:
newChild - 要添加的节点
此方法返回添加的节点。
以下示例(appendchildnode_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并将新的子PhoneNo附加到元素<FirstName>。
<!DOCTYPE html> <html> <head> <script> function loadXMLDoc(filename) { if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else // code for IE5 and IE6 { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",filename,false); xhttp.send(); return xhttp.responseXML; } </script> </head> <body> <script> xmlDoc = loadXMLDoc("/dom/node.xml"); create_e = xmlDoc.createElement("PhoneNo"); x = xmlDoc.getElementsByTagName("FirstName")[0]; x.appendChild(create_e); document.write(x.getElementsByTagName("PhoneNo")[0].nodeName); </script> </body> </html>
在上面的例子中:
使用createElement()方法创建一个新元素PhoneNo。
新元素PhoneNo使用appendChild()方法添加到元素FirstName。
将此文件作为appendchildnode_example.htm保存在服务器路径上(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到属性值,即PhoneNo。
insertBefore()方法在指定的childNode之前插入新的childNode。
insertBefore()方法的语法如下:
Node insertBefore(Node newChild,Node refChild)抛出DOMException insertBefore (Node newChild ,Node refChild )抛出DOMException
哪里:
newChild - 要插入的节点
refChild - 是引用节点,即,必须插入新节点之前的节点。
此方法返回正在插入的节点。
以下示例(insertnodebefore_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并在指定的元素<Email>之前插入新的子邮箱。
<!DOCTYPE html> <html> <head> <script> function loadXMLDoc(filename) { if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else // code for IE5 and IE6 { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",filename,false); xhttp.send(); return xhttp.responseXML; } </script> </head> <body> <script> xmlDoc = loadXMLDoc("/dom/node.xml"); create_e = xmlDoc.createElement("Email"); x = xmlDoc.documentElement; y = xmlDoc.getElementsByTagName("Email"); document.write("No of Email elements before inserting was: " + y.length); document.write("<br>"); x.insertBefore(create_e,y[3]); y=xmlDoc.getElementsByTagName("Email"); document.write("No of Email elements after inserting is: " + y.length); </script> </body> </html>
在上面的例子中:
使用该方法的createElement()的新元件电子邮件被创建。
使用insertBefore()方法将新元素电子邮件添加到元素电子邮件之前。
y.length给出了在新元素之前和之后添加的元素的总数。
将此文件作为insertnodebefore_example.htm保存在服务器路径上(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到以下内容:
插入前的电子邮件元素数量为:3 插入后的电子邮件元素数量为:4
insertData()方法以指定的16位单位偏移量插入一个字符string。
insertData()具有以下语法:
void insertData(int offset,java.lang.String arg)throws DOMException insertData (INT 偏移,java的。郎。字符stringARG )抛出抛出:DOMException
哪里:
offset:是要插入的字符偏移量
arg:是插入数据的关键词。它将两个参数偏移量和字符string括在括号内,用逗号分隔。
以下示例(addtext_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并将新数据MiddleName插入元素<FirstName>。
<!DOCTYPE html> <html> <head> <script> function loadXMLDoc(filename) { if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else // code for IE5 and IE6 { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",filename,false); xhttp.send(); return xhttp.responseXML; } </script> </head> <body> <script> xmlDoc = loadXMLDoc("/dom/node.xml"); x = xmlDoc.getElementsByTagName("FirstName")[0].childNodes[0]; document.write(x.nodeValue); x.insertData(6,"MiddleName"); document.write("<br>"); document.write(x.nodeValue); </script> </body> </html>
x.insertData(6,“MiddleName”); :这里x包含指定子名称的名称ie <FirstName>。然后,我们从这个文本节点插入从位置6开始的数据“MiddleName”。
将此文件作为addtext_example.htm保存在服务器路径上(此文件和node.xml应与您的服务器中的路径相同)。在输出中,我们得到以下内容:
谭美 TanmayMiddleName