本章将探讨使用文档对象的几种方法创建新节点。这些方法提供了创建新元素节点,文本节点,注释节点,CDATA节点节点和属性节点的作用域。如果新创建的节点已经存在于元素对象中,则它将被新的节点替换。以下部分用示例说明这一点。
createElement()方法创建一个新的元素节点。如果新创建的元素节点存在于元素对象中,则将被新元素元素替换。
使用createElement()的语法如下:
var_name = xmldoc.createElement(“tagname”); = xmldoc 。createElement (“tagname” );
哪里:
var_name:是用户定义的变量名称,它保存新元素的名称。
(“tagname”):是要创建的新元素节点的名称。
以下示例(createnewelement_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并在XML文档中创建新的元素节点PhoneNo。
<!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"); new_element = xmlDoc.createElement("PhoneNo"); x = xmlDoc.getElementsByTagName("FirstName")[0]; x.appendChild(new_element); document.write(x.getElementsByTagName("PhoneNo")[0].nodeName); </script> </body> </html>
new_element = xmlDoc.createElement(“PhoneNo”); 创建新的元素节点<PhoneNo>
x.appendChild(new_element);: here x holds the name of the specified child node <FirstName> to which the new element node is appended.
Save this file as createnewelement_example.htm on the server path (this file and node.xml should be on the same path in your server). In the output we get the attribute value as i.e. PhoneNo.
The method createTextNode() creates a new text node.
Syntax to use createTextNode() is as follows:
var_name= xmldoc 。createTextNode (“tagname” );
Where:
var_name: it is the user defined variable name which holds the name of new text node.
(“tagname”):括号内是要创建的新文本节点的名称。
以下示例(createtextnode_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并在XML文档中创建新的文本节点Im新文本节点。
<!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"); create_t = xmlDoc.createTextNode("Im new text node"); create_e.appendChild(create_t); x = xmlDoc.getElementsByTagName("Employee")[0]; x.appendChild(create_e); document.write(" PhoneNO: "); document.write(x.getElementsByTagName("PhoneNo")[0].childNodes[0].nodeValue); </script> </body> </html>
上述代码的详细信息如下:
create_e = xmlDoc.createElement(“PhoneNo”); 创建一个新元素< PhoneNo >。
create_t = xmlDoc.createTextNode(“Im new text node”); 创建新的文本节点“Im new text node”。
x.appendChild(create_e); 文本节点“Im new text node”附加到元素< PhoneNo >上。
document.write(x.getElementsByTagName(“PhoneNo”)[0] .childNodes [0] .nodeValue); 将新的文本节点值写入元素<PhoneNo>
将该文件作为createtextnode_example.htm保存在服务器路径上(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到属性值,即PhoneNO:Im新文本节点。
createComment()方法创建一个新的注释节点。程序中包含注释节点以便于理解代码功能。
使用createComment()的语法如下:
var_name = xmldoc.createComment(“tagname”); = xmldoc 。createComment (“tagname” );
哪里:
var_name:是用户定义的变量名称,它保存新注释节点的名称。
(“tagname”):是要创建的新注释节点的名称。
以下示例(createcommentnode_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并在XML文档中创建新的注释节点“Company是父节点”。
<!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_comment = xmlDoc.createComment("Company is the parent node"); x = xmlDoc.getElementsByTagName("Company")[0]; x.appendChild(create_comment); document.write(x.lastChild.nodeValue); </script> </body> </html>
在上面的例子中:
create_comment = xmlDoc.createComment(“Company is the parent node”); 创建一个指定的注释行。
x.appendChild(create_comment); 在这一行x中,保留附加注释行的元素<Company>的名称。
将此文件作为createcommentnode_example.htm保存在服务器路径上(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到属性值,即公司是父节点 。
方法createCDATASection()创建一个新的CDATA节点。如果新创建的CDATA节点存在于元素对象中,则会被新的CDATA节点代替。
使用createCDATASection()的语法如下:
var_name = xmldoc.createCDATASection(“tagname”); = xmldoc 。createCDATASection (“tagname” );
哪里:
var_name:是用户定义的变量名,它保存新的CDATA节点的名称。
(“tagname”):是要创建的新CDATA节节点的名称。
以下示例(createcdatanode_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并在XML文档中创建新的CDATA节节点“创建CDATA示例”。
<!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_CDATA = xmlDoc.createCDATASection("Create CDATA Example"); x = xmlDoc.getElementsByTagName("Employee")[0]; x.appendChild(create_CDATA); document.write(x.lastChild.nodeValue); </script> </body> </html>
在上面的例子中:
create_CDATA = xmlDoc.createCDATASection(“创建CDATA示例”); 创建一个新的CDATA节点节点“创建CDATA示例”
x.appendChild(create_CDATA); 这里x将指定的元素<Employee>索引为0,附加CDATA节点值。
在服务器路径上将此文件另存为createcdatanode_example.htm(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到属性值,即创建CDATA示例。
要创建一个新的属性节点,使用方法setAttributeNode()。如果新创建的属性节点存在于元素对象中,则会被新的属性节点替换。
使用setAttributeNode()的语法如下:
var_name = xmldoc.createAttribute(“tagname”); = xmldoc 。createAttribute (“tagname” );
哪里:
var_name:是用户定义的变量名,它保存新属性节点的名称。
(“tagname”):是要创建的新属性节点的名称。
以下示例(createattributenode_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并在XML文档中创建新的属性节点部分。
<!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_a = xmlDoc.createAttribute("section"); create_a.nodeValue = "A"; x = xmlDoc.getElementsByTagName("Employee"); x[0].setAttributeNode(create_a); document.write("New Attribute: "); document.write(x[0].getAttribute("section")); </script> </body> </html>
在上面的例子中:
create_a = xmlDoc.createAttribute(“Category”); 创建一个名称为<section>的属性。
create_a.nodeValue =“管理”; 为属性<section> 创建值“A”。
x [0] .setAttributeNode(create_a); 此属性值设置为索引为0的节点元素<Employee>。