Dom 구조 이용한 XML 처리 예제

function processXML(){//XML문서객체 구조 처리 메소드

var xmlDoc = xhrObject.responseXML; //서버로부터의 응답을 XML문서 객체로 받음

var subject=””;

var trTag =””

var tdTag =””


var subjects=xmlDoc.getElementsByTagName(“subject”); //응답받은 XML문서 객체에서 subject엘리먼트를 모두 찾아서 배열로 리턴


for(var i=0;i<subjects.length;i++){ //subject엘리먼트 개수만큼 반복

trTag = document.createElement(“tr”); //tr엘리먼트 생성

subject= subjects[i];//subject엘리먼트배열로부터 subject엘리먼트를 하나 받아서 subject변수에 저장

 

var child = subject.childNodes; //subject엘리먼트의 자식엘리먼트를 배열로 리턴


for(var j=0; j<child.length;j++){ //subject엘리먼트의 자식엘리먼트 개수만큼 반복

tdTag = document.createElement(“td”); //td엘리먼트 생성

 

var text = document.createTextNode(child[j].firstChild.nodeValue);//텍스트 엘리먼트 text를 생성

//child[j].firstChild.nodeValue은 특정 엘리먼트의 노드값(내용)을 얻어낼때 사용

tdTag.appendChild(text); //td엘리먼트에 텍스트 엘리먼트 text를 자식엘리먼트로 추가

trTag.appendChild(tdTag);//tr엘리먼트에 td엘리먼트를 자식엘리먼트로 추가

}

 

document.getElementById(“resultDisplay”).appendChild(trTag); //id 속성의 값이 “resultDisplay”인 엘리먼트에 tr엘리먼트를 자식엘리먼트로 추가

}

}

 

즉 태그단위로 트리를 생성, 삭제하여 xml을 컨버팅.

허허.. 언제부터 html이 이렇게 구조적으로 되었단 말인가, 정말.. 98년 내가 처음 자바스크립트를 만졌을 때와는 너무나도 달라졌구나….

 

<참고> XML문서

 

<?xml version=”1.0″ encoding=”utf-8″?>

<curriculum>

<subject>

<codeNumber>j101</codeNumber>

<titleName>JAVA</titleName>

<roomNumber>801</roomNumber>

</subject>

<subject>

<codeNumber>j103</codeNumber>

<titleName>JSP</titleName>

<roomNumber>503</roomNumber>

</subject>

<subject>

<codeNumber>a019</codeNumber>

<titleName>Ajax</titleName>

<roomNumber>505</roomNumber>

</subject>

<subject>

<codeNumber>c001</codeNumber>

<titleName>C</titleName>

<roomNumber>402</roomNumber>

</subject>

<subject>

<codeNumber>c002</codeNumber>

<titleName>C++</titleName>

<roomNumber>403</roomNumber>

</subject>

</curriculum>