본문 바로가기

jQuery/jQuery xml

jQuery xml parsing

jQuery에서 ajax 요청결과 XML 응답을 처리하는 예



클라이언트측 코드 (요청결과 xml 을 수신하여 태그의 속성과 값을 추출하는 예 )

<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>jQuery AJAX Request and XML Response</title>
<script type="text/javascript" src="jquery-2.1.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
        $('button').click(function(){
            $.ajax({
               type: "GET"
               ,dataType: "xml"
               ,url: "data.xml"
               ,success: function(xml){

                    var xmlData = $(xml).find("book");
                    var listLength = xmlData.length;
                    if (listLength) {
                        var contentStr = "";
                        $(xmlData).each(function(){
                            contentStr += $(this).find("title").attr("lang")+", "+
                            	$(this).find("title").text() +
                                $(this).find("price").text()+ "</br>";
                        });
                        $("#div1").empty().html(contentStr);
                    }
                }
             }); 
        });
    });
</script>
</head>
<body>
<button>AJAX 요청</button>
<div id="div1"></div>
</body>
</html>




서버측에서 사용된 xml 파일

data.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
  <title lang="en">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="ko">홍길동전</title>
  <price>32.3</price>
</book>
<book>
  <title lang="en">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>




jQuery ajax 요청시 JSP를 이용하여 xml 포맷으로 응답하는 예

클라이언트측 코드

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery AJAX Request and XML Response</title>
<script type="text/javascript" src="jquery-2.1.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
        $('button').click(function(){
            $.ajax({
               type: "GET"
               ,dataType: "xml"
               ,url: "data.jsp"
               ,success: function(xml){
            	   
                    var xmlData = $(xml).find("book");
                    var listLength = xmlData.length;
                    if (listLength) {
                        var contentStr = "";
                        $(xmlData).each(function(){
                            contentStr += $(this).find("title").attr("lang")+", "+
                            	$(this).find("title").text() +
                                $(this).find("price").text()+ "</br>";
                        });
                        $("#div1").empty().html(contentStr);
                    }
                }
             }); 
        });
    });
</script>
</head>
<body>
<button>AJAX 요청</button>
<div id="div1"></div>
</body>
</html>




위의 요청시 JSP 에서 xml 포맷으로 응답하는 예

data.jsp

<?xml version="1.0" encoding="UTF-8"?>
<%@ page language="java" contentType="text/plain; charset=utf-8"
    pageEncoding="utf-8" trimDirectiveWhitespaces="true"%>
<%
	String title = "홍길동전";
	int price = 32;
%>
<bookstore>
<book>
  <title lang="en">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="ko"><%=title%></title>
  <price><%=price%></price>
</book>
<book>
  <title lang="en">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>




ajax 를 이용하여 사원정보를 요청할 때 xml 포맷으로 수신하는 예

클라이언트측 코드

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery AJAX Request and XML Response</title>
<script type="text/javascript" src="jquery-2.1.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
        $('button').click(function(){

            $.ajax({
               type: "GET"
               ,dataType: "xml"
               ,url: "server_xml.jsp"
               ,success: function(xml){
            	   alert(xml);
                    var xmlData = $(xml).find("emp");
                    var listLength = xmlData.length;
                    if (listLength) {
                        var contentStr = "";
                        $(xmlData).each(function(){
                            contentStr += $(this).attr("empno")+", "+
                            	$(this).find("ename").text() +
                                $(this).find("hiredate").text()+ "</br>";
                        });
                        $("#div1").empty().html(contentStr);
                    }
                }
             }); 
        });
    });
</script>
</head>
<body>
<button>AJAX 요청</button>
<div id="div1"></div>
</body>
</html>




클라이언트에게 xml 포맷으로 사원정보를 전달하는 서버측 코드(JSP)

<?xml version="1.0" encoding="utf-8" ?>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8" trimDirectiveWhitespaces="true"%>
<%
	int[] empno = {1001,1002,1003,1004 };
	String[] ename = {"김인철","유인섭","이병헌","신기용"};
	String[] hiredate = {"2001-02-15","2005-11-22","2007-05-07","2011-12-14" };
%>
<emplist>
<% for(int i=0;i<empno.length;i++) { %>
  <emp empno="<%=empno[i]%>">
     <ename><%=ename[i]%></ename>
     <hiredate><%=hiredate[i]%></hiredate>
  </emp>
<% } %>
</emplist>