<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="영업부">
    <사원>박길동</사원>
    <사원>최길동</사원>
  </영업부>
</부서들>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

getElementById(id) : 다큐먼트에서 특정한 id 속성값을 가지고 있는 요소를 반환한다.


getElementsByTagName(name) : 특정한 태그 이름을 가지고 있는 자식 요소로 구성된 배열을 리턴 한다.


hasChildNodes() : 해당 요소가 자식 요소를 포함하고 있는지를 나타내는 Boolean 값을 리턴 한다.


getAttribute(name) : 특정한 name 에 해당하는 요소의 속성값을 리턴 한다. 

 

 

 

 

 

 

-childNodes : 현재 요소의 자식을 배열로 표현한다.

-firstChild : 현재 요소의 첫번째 자식이다.

-lastChild : 현재 요소의 마지막 자식이다.

-nextSibling : 현재 요소와 바로 다음의 요소를 의미한다.

-nodeValue : 해당 요소의 값을 읽고 쓸 수 있는 속성을 정의한다.(=data)

-parentNode : 해당 요소의 부모노드이다.

-previousSibling : 현재 요소와 바로 이전의 요소를 의미한다.

 

 

 

 

 

 

'자바 > JAVA...Spring' 카테고리의 다른 글

[parseXML.html]  (0) 2016.01.04
XML 다큐먼트를 다루는 유용한 DOM 요소의 메소드  (0) 2016.01.04
DOM (Document Object Model)  (0) 2015.12.30
ProgressBarServlet.java  (0) 2015.12.30
progressBar.html  (0) 2015.12.29

-DOM은 문서(HTML, XML)를 객체로 표현하기 위한 방법


-XHR 객체의 resonseText 속성 단순한 문자열 처리에 적합한 형태이다.


-복잡한 응답데이터의 경우는 단순한 문자열로 처리할 수 없으며 XML 형식으로 처리하는 것이 훨씬 논리적이고 효율적일 것이다.
브라우저는 서버로부터 전달받은 XML 문서를 W3C 의 DOM 을 이용해서 처리한다.

-DOM 은 HTML 과 XML 을 다루는 API 를 제공

-XML 문서를 트리 구조로 해석하고 트리 구조의 노드를 조작하여 문서를 다루기 위한 방법

-XML 파서를 이용하여 문자열 형태의 XML 문서가 DOM 구조를 가진 객체들로 생성 된다

-Java 언어에서는 클래스 라이브러리의 형태로 XML 파서를 사용 할 수 있으며 이것을 이용하면 메소드를 통해 XML 문서의 조작이 가능

-DOM에 대한 표준 명세를 제공하는 곳은 http://www.w3c.org/DOM

-DOM은 XML 문서를 트리 구조로 취급 하므로 다루기 용이하다. 그러나 XML 문서 전체를 읽어 트리로 조립하기에 커다란 XML 문서를 다루는기에는 용이 하지 못한 부분도 있다. 그래서 XML 문서를 다루는 방법으로 DOM과 함께 SAX라고 불리는 방법이 주로 사용 된다.

-SAX의 경우 앞부분 부터 순서대로 읽어 들여 처리하므로 요소나 텍스트를 단순히 추출하는것은 간단하나 문서의 일부분을 조작하는 것은 DOM에 비해 복잡하다.  

 

 

 

 

 

 

 

 

 

 

'자바 > JAVA...Spring' 카테고리의 다른 글

XML 문서를 처리하기 위한 DOM 요소의 속성  (0) 2015.12.30
DOM (Document Object Model)  (0) 2015.12.30
progressBar.html  (0) 2015.12.29
DynamicUpdateServlet.java  (0) 2015.12.29
dynamicUpdate.html  (0) 2015.12.29

 

 

 

 

 

'자바 > JAVA...Spring' 카테고리의 다른 글

DOM (Document Object Model)  (0) 2015.12.30
ProgressBarServlet.java  (0) 2015.12.30
DynamicUpdateServlet.java  (0) 2015.12.29
dynamicUpdate.html  (0) 2015.12.29
[/Web-INF/src/validation/ ValidationServlet .java]  (0) 2015.12.28

 

 

 

 

'자바 > JAVA...Spring' 카테고리의 다른 글

ProgressBarServlet.java  (0) 2015.12.30
progressBar.html  (0) 2015.12.29
dynamicUpdate.html  (0) 2015.12.29
[/Web-INF/src/validation/ ValidationServlet .java]  (0) 2015.12.28
[/Web-INF/web.xml]  (0) 2015.12.28

 

 

 

 

 

 

'자바 > JAVA...Spring' 카테고리의 다른 글

progressBar.html  (0) 2015.12.29
DynamicUpdateServlet.java  (0) 2015.12.29
[/Web-INF/src/validation/ ValidationServlet .java]  (0) 2015.12.28
[/Web-INF/web.xml]  (0) 2015.12.28
[form_test.html]  (0) 2015.12.28

+ Recent posts