XML DOM-노드 생성

이 장에서는 문서 객체의 몇 가지 방법을 사용하여 새 노드를 만드는 방법에 대해 설명합니다. 이러한 메서드는 새 요소 노드, 텍스트 노드, 주석 노드, CDATA 섹션 노드 및 속성 노드 를 생성하는 범위를 제공 합니다 . 새로 생성 된 노드가 이미 요소 개체에있는 경우 새 노드로 대체됩니다. 다음 섹션에서는이를 예제로 보여줍니다.

요소 노드 만들기

createElement () 메서드 는 새 요소 노드를 만듭니다. 새로 생성 된 요소 노드가 요소 객체에 존재하면 새 노드로 대체됩니다.

통사론

createElement () 메서드 를 사용하는 구문 은 다음과 같습니다.

var_name = 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); x 는 새 요소 노드가 추가되는 지정된 하위 노드 <FirstName>의 이름을 보유합니다.

실행

이 파일을 서버 경로에 createnewelement_example.htm 으로 저장 합니다 (이 파일과 node.xml 은 서버의 동일한 경로에 있어야 함). 출력에서 속성 값은 PhoneNo 입니다.

텍스트 노드 만들기

createTextNode () 메서드 는 새 텍스트 노드를 만듭니다.

통사론

createTextNode () 를 사용하는 구문 은 다음과 같습니다.

var_name = xmldoc.createTextNode("tagname");

어디,

  • var_name- 새 텍스트 노드의 이름을 보유하는 사용자 정의 변수 이름입니다.

  • ( "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); 텍스트 노드 "임 새로운 텍스트 노드" <요소에 첨부된다 PHONENO >.

  • document.write (x.getElementsByTagName ( "PhoneNo") [0] .childNodes [0] .nodeValue); 새 텍스트 노드 값을 <PhoneNo> 요소에 씁니다.

실행

이 파일을 서버 경로에 createtextnode_example.htm 으로 저장 합니다 (이 파일과 node.xml은 서버의 동일한 경로에 있어야 함). 출력에서 속성 값은 예를 들어 PhoneNO : Im new text node 입니다.

Comment 노드 만들기

createComment () 메소드 는 새로운 주석 노드를 생성합니다. 코드 기능을 쉽게 이해할 수 있도록 주석 노드가 프로그램에 포함되어 있습니다.

통사론

createComment () 를 사용하는 구문 은 다음과 같습니다.

var_name = xmldoc.createComment("tagname");

어디,

  • var_name- 새 주석 노드의 이름을 보유하는 사용자 정의 변수 이름입니다.

  • ( "tagname") -생성 될 새 주석 노드의 이름입니다.

다음 예제 (createcommentnode_example.htm)는 XML 문서 ( node.xml )를 XML DOM 객체로 구문 분석하고 XML 문서 에 "Company is the parent 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_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 ( "회사는 상위 노드입니다.") creates a specified comment line.

  • x.appendChild (create_comment) 이 행에서 'x' 는 주석 행이 추가되는 <Company> 요소의 이름을 보유합니다.

실행

이 파일을 서버 경로에 createcommentnode_example.htm 으로 저장 합니다 (이 파일과 node.xml 은 서버의 동일한 경로에 있어야 함). 출력에서 Company가 부모 노드이므로 속성 값을 얻습니다 .

CDATA 섹션 노드 생성

createCDATASection () 메소드 는 새로운 CDATA 섹션 노드를 생성합니다. 새로 생성 된 CDATA 섹션 노드가 요소 객체에 존재하면 새 노드로 대체됩니다.

통사론

createCDATASection () 을 사용하는 구문 은 다음과 같습니다.

var_name = xmldoc.createCDATASection("tagname");

어디,

  • var_name- 새로운 CDATA 섹션 노드의 이름을 보유하는 사용자 정의 변수 이름입니다.

  • ( "tagname") -생성 할 새 CDATA 섹션 노드의 이름입니다.

다음 예제 (createcdatanode_example.htm)는 XML 문서 ( node.xml )를 XML DOM 객체로 구문 분석하고 XML 문서 에 새 CDATA 섹션 노드 "Create CDATA Example"만듭니다 .

<!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 ( "Create CDATA Example") 은 새 CDATA 섹션 노드 "Create CDATA Example"을 만듭니다.

  • x.appendChild (create_CDATA) 여기서 x 는 CDATA 노드 값이 추가되는 0에서 색인화 된 지정된 요소 <Employee>를 보유합니다.

실행

이 파일을 서버 경로에 createcdatanode_example.htm 으로 저장 합니다 (이 파일과 node.xml은 서버의 동일한 경로에 있어야 함). 출력에서 Create CDATA Example 으로 속성 값을 얻습니다 .

속성 노드 만들기

새로운 속성 노드를 생성하기 위해 setAttributeNode () 메소드 가 사용됩니다. 새로 생성 된 속성 노드가 요소 개체에 존재하는 경우 새 속성 노드로 대체됩니다.

통사론

createElement () 메서드 를 사용하는 구문 은 다음과 같습니다.

var_name = 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 = "Management" 는 <section> 속성에 대해 "A" 값을 만듭니다 .

  • x [0] .setAttributeNode (create_a) 이 속성 값은 0으로 인덱싱 된 노드 요소 <Employee>로 설정됩니다.