在本章中,我们将研究如何更改XML DOM对象中节点的值。节点值可以改变如下:
var value = node.nodeValue;
如果节点是属性,则值变量将是属性的值; 如果节点是Text节点,它将是文本内容; 如果节点是元素,它将为空。
以下部分将演示每个节点类型(属性,文本节点和元素)的节点值设置。
该node.xml在以下所有实施例中使用是如下:
<Company> <Employee category="Technical"> <FirstName>Tanmay</FirstName> <LastName>Patil</LastName> <ContactNo>1234567890</ContactNo> <Email>tanmaypatil@xyz.com</Email> </Employee> <Employee category="Non-Technical"> <FirstName>Taniya</FirstName> <LastName>Mishra</LastName> <ContactNo>1234667898</ContactNo> <Email>taniyamishra@xyz.com</Email> </Employee> <Employee category="Management"> <FirstName>Tanisha</FirstName> <LastName>Sharma</LastName> <ContactNo>1234562350</ContactNo> <Email>tanishasharma@xyz.com</Email> </Employee> </Company>
当我们说,改变Node元素的值我们意味着编辑元素的文本内容(也称为文本节点)。以下示例演示如何更改元素的文本节点。
以下示例(set_text_node_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并将元素的文本节点的值(在这种情况下为每个员工的电子邮件)更改为support@xyz.com并打印价值观。
<!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("Email"); for(i =0 ;i<x.length;i++){ x[i].childNodes[0].nodeValue = "support@xyz.com"; document.write(i+") "); document.write(x[i].childNodes[0].nodeValue); document.write("<br>"); } </script> </body> </html>
将该文件作为set_text_node_example.htm保存在服务器路径上(此文件和node.xml应位于服务器中相同的路径上)。结果如下:
0)support@xyz.com 1)support@xyz.com 2)support@xyz.com
以下示例演示如何更改元素的属性节点。
以下示例(set_attribute_example.htm)将XML文档(“ node.xml ” )解析为XML DOM对象,并更改元素属性节点的值,在这种情况下,每个员工的类别为admin-0,admin-1, admin-2并打印值。
<!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("Employee"); for(i = 0 ;i<x.length;i++){ newcategory = x[i].getAttributeNode("category"); newcategory.nodeValue = "admin-"+i; document.write(i+") "); document.write(x[i].getAttributeNode("category").nodeValue); document.write("<br>"); } </script> </body> </html>
将此文件作为set_node_attribute_example.htm保存在服务器路径上(此文件和node.xml应位于服务器中的相同路径上)。结果如下:
0)admin-0 1)admin-1 2)admin-2