본문 바로가기
study/Ajax

[Ajax] 22. Ajax로 xml, json 분석하기

by 금이패런츠 2022. 4. 27.
728x90
반응형
<?xml version="1.0" encoding="euc-kr" ?>
<!--src/main/webapp/ajax/house.xml -->
<!-- 
	1. 시작태그가 있으면 종료태그가 있어야 함.
	2. 대소문자 구분해야 함.
-->
<properties> <!-- 루트 태그 : 한개만 가능. 문서작성 규칙 -->
   <property>
   		<address>서울시 종로구 가회동 100번지</address>
      	<price>5000</price>
      	<comment>조용하고 좋은 이웃</comment>
   </property>
   <property>
   		<address>서울시 종로구 역삼동 100번지</address>
      	<price>50000</price>
      	<comment>학교, 백화점 등 편의 시설 좋음</comment>
   </property>
   <property>
   		<address>경기도 부천시 역곡동 100번지</address>
      	<price>30000</price>
      	<comment>교통 좋고, 공기 좋음</comment>
   </property>
    <property>
   		<address>경기도 광주시 광주역 5로 18번길 자연앤자이</address>
      	<price>110000</price>
      	<comment>교통 좋고, 공기 좋음</comment>
   </property>
</properties>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%--src/main/webapp/ajax/house.jsp --%>
<%--
	json 문서
	[	] : 배열표시
	{	} : json 객체
	 키 	  : 값 
 --%>
{"properties" : [
	{ "address" : "서울시 종로구 가회동 100번지",
	  "price" : 50000,
	  "comment" : "조용하고 좋은 이웃"
    },
    { "address" : "서울시 종로구 역삼동 100번지",
	  "price" : 5000,
	  "comment" : "학교 백화점 등 편의 시설 좋음"
    },
    { "address" : "경기도 부천시 역곡동 100번지",
	  "price" : 3000,
	  "comment" : "교통 좋고, 공기 좋음"
    }
]}

<!DOCTYPE html>
<!--src/main/webapp/ajax/house.html -->
<html>
<head>
<meta charset="UTF-8">
<title>ajax로 xml, json 분석하기</title>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
	function doXml() {
		sendRequest("house.xml", null, xmlResult, "GET")
	}
	function doJson() {
		sendRequest("house.jsp", null, jsonResult, "GET")
	}
	function xmlResult() {
		if(ajax.readyState == 4) {
			if(ajax.status == 200) {
				xmlControl()
			}
		}
	}
	function jsonResult() {
		if(ajax.readyState == 4) {
			if(ajax.status == 200) {
				jsonControl()
			}
		}
	}
	function xmlControl() {
		//responseXML : xml을 파싱(분석)해서 DOM의 형태로 리턴. xml문서 작성 규칙에 맞는 문서여야함.
		let xmlDoc = ajax.responseXML;
		let house = xmlDoc.getElementsByTagName("property")
		let htmldata = "<table><tr><th>주소</th><th>가격</th><th>특징</th></tr>"
		//house.length : 3
		for(let i=0; i<house.length; i++) {
			//childNodes : address 객체의 하위 객체들. TextNode
			//nodeValue : TextNode의 내용. 문자열 값
			let addr = house[i].getElementsByTagName("address")[0].childNodes[0].nodeValue;
			let price = house[i].getElementsByTagName("price")[0].childNodes[0].nodeValue;
			let comment = house[i].getElementsByTagName("comment")[0].childNodes[0].nodeValue;
			htmldata += "<tr><td>" + addr + "</td><td>" + price + "</td><td>" + comment + "</td></tr>"
		}
		result.innerHTML = "<h2>XML 주택정보</h2>"
		result.innerHTML += htmldata
	}
	function jsonControl() {
		var data = ajax.responseText;
		var htmldata = "<table border='1'>" + "<tr><th>주소</th><th>가격</th><th>특징</th></tr>";
		console.log(data)
		var jsondata = JSON.parse(data); //JSON 객체
		for(var i=0; i<jsondata.properties.length; i++) {
			htmldata +=
				"<tr><td>" + jsondata.properties[i].address +
				"</td><td>" + jsondata.properties[i].price +
				"</td><td>" + jsondata.properties[i].comment +
				"</td></tr>"
		}
		htmldata += "<tr><td colspan='3' align='center'> 총 매물 건수 :" 
		+ jsondata.properties.length + "건</td></tr></table>"
		result.innerHTML = "<h2>JSON 주택정보</h2>"
		result.innerHTML += htmldata;
	}
</script>
</head>
<body>
<input type="button" value="xml 매물 검색" onclick="doXml()">
<input type="button" value="json 매물 검색" onclick="doJson()">
<div id="result"></div>
</body>
</html>
728x90
반응형

'study > Ajax' 카테고리의 다른 글

[Ajax] 23. jquery를 이용한 Ajax연습  (0) 2022.04.27
[Ajax] 22. Ajax로 xml 예제1  (0) 2022.04.27
[Ajax] 22. Ajax을 이용한 게시물검색2  (0) 2022.04.27
[Ajax] 22. Ajax을 이용한 게시물검색1  (0) 2022.04.27
[Ajax] 22. Ajax  (0) 2022.04.26