-

在本章中,我们将研究如何更改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

更改属性Node的值

以下示例演示如何更改元素的属性节点。

以下示例(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