-

本章将探讨使用文档对象的几种方法创建新节点。这些方法提供了创建新元素节点,文本节点,注释节点,CDATA节点节点和属性节点的作用域如果新创建的节点已经存在于元素对象中,则它将被新的节点替换。以下部分用示例说明这一点。

创建新的Element节点

createElement()方法创建一个新的元素节点。如果新创建的元素节点存在于元素对象中,则将被新元素元素替换。

用法

使用createElement()的语法如下:

var_name = xmldoc.createElement(“tagname”);
= xmldoc createElement “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>

Execution

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.

Create new Text node

The method createTextNode() creates a new text node.

Syntax

Syntax to use createTextNode() is as follows:

var_name= xmldoc createTextNode “tagname” );

Where:

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

上述代码的详细信息如下:

执行

将该文件作为createtextnode_example.htm保存在服务器路径上(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到属性值,即PhoneNO:Im新文本节点

创建新的注释节点

createComment()方法创建一个新的注释节点。程序中包含注释节点以便于理解代码功能。

用法

使用createComment()的语法如下:

var_name = xmldoc.createComment(“tagname”);
= xmldoc createComment “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>

在上面的例子中:

执行

将此文件作为createcommentnode_example.htm保存在服务器路径上(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到属性值,即公司是父节点

创建新的CDATA节点节点

方法createCDATASection()创建一个新的CDATA节点。如果新创建的CDATA节点存在于元素对象中,则会被新的CDATA节点代替。

用法

使用createCDATASection()的语法如下:

var_name = xmldoc.createCDATASection(“tagname”);
= xmldoc createCDATASection “tagname” );

哪里:

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

在上面的例子中:

执行

在服务器路径上将此文件另存为createcdatanode_example.htm(此文件和node.xml应与服务器中的路径相同)。在输出中,我们得到属性值,即创建CDATA示例

创建新的属性节点

要创建一个新的属性节点,使用方法setAttributeNode()如果新创建的属性节点存在于元素对象中,则会被新的属性节点替换。

用法

使用setAttributeNode()的语法如下:

var_name = xmldoc.createAttribute(“tagname”);
= xmldoc createAttribute “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>

在上面的例子中: