Dom-xml-dom-create-node

提供:Dev Guides
移動先:案内検索

XML DOM-ノードの作成

この章では、ドキュメントオブジェクトのいくつかのメソッドを使用して新しいノードを作成する方法について説明します。 これらのメソッドは、新しい_elementノード、テキストノード、コメントノード、CDATAセクションノード、および属性node_を作成するスコープを提供します。 新しく作成されたノードが要素オブジェクトにすでに存在する場合、新しいノードに置き換えられます。 次のセクションでは、これを例とともに示します。

新しい_Element_ノードを作成

メソッド_createElement()_は、新しい要素ノードを作成します。 新しく作成された要素ノードが要素オブジェクトに存在する場合、新しいノードに置き換えられます。

構文

_createElement()_メソッドを使用する構文は次のとおりです-

var_name = xmldoc.createElement("tagname");

どこで、

  • var_name-新しい要素の名前を保持するユーザー定義の変数名です。
  • ( "tagname")-は、作成される新しい要素ノードの名前です。

次の例(createnewelement_example)は、XMLドキュメント(link:/dom/node.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); x_は、新しい要素ノードが追加される指定された子ノード<FirstName>の名前を保持します。

実行

このファイルを_createnewelement_example_としてサーバーパスに保存します(このファイルとlink:/dom/node.xml [node.xml]はサーバーの同じパスにある必要があります)。 出力では、_PhoneNo_として属性値を取得します。

新しい_Text_ノードを作成

メソッド_createTextNode()_は、新しいテキストノードを作成します。

構文

_createTextNode()_を使用する構文は次のとおりです-

var_name = xmldoc.createTextNode("tagname");

どこで、

  • var_name-新しいテキストノードの名前を保持するのは、ユーザー定義の変数名です。
  • ( "tagname")-括弧内は、作成される新しいテキストノードの名前です。

次の例(createtextnode_example)は、XMLドキュメント(link:/dom/node.xml [node.xml])を解析してXML DOMオブジェクトに変換し、XMLドキュメントに新しいテキストノード_Im new text node_を作成します。

<!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); _テキストノード、「新しいテキストノード」_が要素<PhoneNo>に追加されます。
  • _document.write(x.getElementsByTagName( "PhoneNo")[0] .childNodes [0] .nodeValue); _は、新しいテキストノード値を要素<PhoneNo>に書き込みます。

実行

このファイルを_createtextnode_example_としてサーバーパスに保存します(このファイルとnode.xmlはサーバーの同じパスにある必要があります)。 出力では、属性値を取得します。 PhoneNO:Im new text node

新しい_Comment_ノードを作成

メソッド_createComment()_は、新しいコメントノードを作成します。 コードの機能を簡単に理解できるように、プログラムにはコメントノードが含まれています。

構文

_createComment()_を使用する構文は次のとおりです-

var_name = xmldoc.createComment("tagname");

どこで、

  • var_name-新しいコメントノードの名前を保持するユーザー定義の変数名です。
  • ( "tagname")-は、作成される新しいコメントノードの名前です。

次の例(createcommentnode_example)は、XMLドキュメント(link:/dom/node.xml [node.xml])を解析してXML DOMオブジェクトに変換し、新しいコメントノード_ "Company is the parent node" _を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_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( "会社は親ノードです")_* 指定されたコメント行を作成します*。
* _x.appendChild(create_comment)_この行では、_ 'x'_はコメント行が追加される要素<Company>の名前を保持します。

実行

このファイルを_createcommentnode_example_としてサーバーパスに保存します(このファイルとlink:/dom/node.xml [node.xml]はサーバーの同じパスにある必要があります)。 出力では、_Companyが親ノード_であるため、属性値を取得します。

新しい_CDATAセクション_ノードの作成

メソッド_createCDATASection()_は、新しいCDATAセクションノードを作成します。 新しく作成されたCDATAセクションノードが要素オブジェクトに存在する場合、新しいノードに置き換えられます。

構文

_createCDATASection()_を使用する構文は次のとおりです-

var_name = xmldoc.createCDATASection("tagname");

どこで、

  • var_name-新しいCDATAセクションノードの名前を保持するユーザー定義の変数名です。
  • ( "tagname")-は、作成される新しいCDATAセクションノードの名前です。

次の例(createcdatanode_example)は、XMLドキュメント(link:/dom/node.xml [node.xml])を解析してXML DOMオブジェクトに変換し、新しいCDATAセクションノード_ "Create CDATA Example" _を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_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_は、CDATAノード値が追加される0でインデックス付けされた指定の要素<Employee>を保持します。

実行

このファイルを_createcdatanode_example_としてサーバーパスに保存します(このファイルとnode.xmlはサーバーの同じパスにある必要があります)。 出力では、属性値を_Create CDATA Example_として取得します。

新しい_Attribute_ノードを作成

新しい属性ノードを作成するには、_setAttributeNode()_メソッドを使用します。 新しく作成された属性ノードが要素オブジェクトに存在する場合、新しいノードに置き換えられます。

構文

_createElement()_メソッドを使用する構文は次のとおりです-

var_name = xmldoc.createAttribute("tagname");

どこで、

  • var_name-新しい属性ノードの名前を保持するユーザー定義の変数名です。
  • ( "tagname")-は、作成される新しい属性ノードの名前です。

次の例(createattributenode_example)は、XMLドキュメント(link:/dom/node.xml [node.xml])をXML DOMオブジェクトに解析し、XMLドキュメントに新しい属性ノード_section_を作成します。

<!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 = "Management" _は、属性<section>の値 "A" _を作成します。
  • _x [0] .setAttributeNode(create_a)_この属性値は、0でインデックス付けされたノード要素<Employee>に設定されます。