<html><head><meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>DOM을 이용한 XML의 응답결과 파싱</title>
<script language="JavaScript">
<!--
var xmlHttp;
var rquestType = "“;
// XMLHttpRequest 객체를 생성한다.
function createXMLHttpRequest(){
if (window.ActiveXObject) {
    try {    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        try {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e1) {
        xmlHttp = null;
    }
    }

} else if (window.XMLHttpRequest) {
    try{
        xmlHttp = new XMLHttpRequest()
    } catch(e1) {
        xmlHttp = null
    }
} else {
    xmlHttp = null;
}
  if (xmlHttp == null) alert("지원할 수 없는 브라우저!");
}

// 요청타입 변수를 설정하고, 콜백 함수를 붙이고 요청을 수행한다.
function startRequest(requestedList) {
    requestType = requestedList;
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.open("GET", "parseXML.xml", true);
    xmlHttp.send(null);
}

// 응답을 처리하는 콜백함수이다. 요청시 설정했던 요청 타입에 따라 응답을 처리한다.
function handleStateChange() {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            if(requestType == "영업부") {
                listGeneralDepartment();
            } else if(requestType == "all") {
                listAllDepartment();
            }
        }
    }
}

// 요청타입이 "영업부" 일 경우 응답을 처리한다.
function listGeneralDepartment() {
    var xmlDoc = xmlHttp.responseXML;
    var generalNode = xmlDoc.getElementsByTagName("영업부")[0];
    var title = generalNode.getAttribute("title");
    var staff = generalNode.getElementsByTagName("사원");
    outputList(title, staff);
}

// 요청타입이 "all"일 경우 응답을 처리한다.
function listAllDepartment() {
    var xmlDoc = xmlHttp.responseXML;
    var allStaff = xmlDoc.getElementsByTagName("사원");
    outputList("모든 사원", allStaff);
}

// 공통 처리함수이다.
function outputList(title, staff) {
    var out = title;
    var currentState = null;
    for(var i = 0; i < staff.length; i++) {
        currentStaff = staff[i];
        out = out + "\n- " + currentStaff.childNodes[0].nodeValue;
    }
    alert(out);
}
//-->
</script>

</head>

<body>
<h3>DOM을 이용한 XML 응답 파싱</h3>
<br/>
<form action="#">
    <input type="button" value="모든 부서원보기" onclick="startRequest('all');"/>
    <br/><br/>
    <input type="button" value="영업부 사원보기" onclick="startRequest('영업부');"/>
</form>
<div id="results"></div>
</body>
</html>

[parseXML.xml]

<?xml version="1.0" encoding="utf-8"?>
<부서들>
  <총무부 title="총무부">
    <사원>김길동</사원>
    <사원>이길동</사원>
  </총무부>
  <영업부 title="영업부">
    <사원>박길동</사원>
    <사원>최길동</사원>
  </영업부>
</부서들>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts