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>로 설정됩니다.