<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$.ajax({
type:"get"
,dataType:"xml"
,url:"weather.xml"
,success:function(xml){
if($(xml).find("data").length > 0){
$(xml).find("data").each(function() {//each >> for문 같은기ㅇㅇ
var numEf = $(this).find("numEf").text();
var tmEf = $(this).find("tmEf").text();
var wf = $(this).find("wf").text();
var tmn = $(this).find("tmn").text();
var tmx = $(this).find("tmx").text();
var reliability = $(this).find("reliability").text();
$('#a').append(numEf).append(tmEf).append(wf).append(tmn).append(tmx).append(reliability);
//$('#b').append(wf);
//$('#c').append(tmn);
//$('#d').append(tmx);
//$('#e').append(reliability);
});
}
var wf1 = $(xml).find("wf").text();
$('#aa').append(wf1);
//alert(wf1);
}
,errorr:function(){alert("xml error!!");}
});
</script>
</head>
<body>
<span id = "a"></span>
<br>
<br>
<span id = "aa"></span>
<!-- span id = "b"></span>
<span id = "c"></span>
<span id = "d"></span>
<span id = "e"></span-->
</body>
</html>
-----------------------------------------------------------------------weather.jsp 입니다.
<?xml version="1.0" encoding="UTF-8"?>
<wid>
<header>
<title>제주도 육상주간예보</title>
<tm>201305160600</tm>
<wf>
<![CDATA[제주도남쪽해상을 지나는 저기압의 영향으로 18일 오후부터 19일 오전사이에 비가 오겠고, 그 밖의 날은 고기압 가장자리에 들어 가끔 구름많겠습니다. <br /><br />기온은 평년(최저기온 : 14~15도, 최고기온 : 22도)과 비슷하거나 조금 높겠습니다.<br /><br />강수량은 평년(강수량 : 2~4mm)과 비슷하겠습니다.<br /> <br />바다의 물결은 18일부터 19일까지 2~4m로 높게 일겠고, 그 밖의 날은 1~3m로 일겠습니다.]]>
</wf>
</header>
<body>
<location wl_ver="2" province="11G00000" city="11G00201">
<province code="11G00000">제주도</province>
<city code="11G00201">제주</city>
<data>
<numEf>2</numEf>
<tmEf>2013-05-18</tmEf>
<wf>흐리고 비</wf>
<tmn>16</tmn>
<tmx>20</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>3</numEf>
<tmEf>2013-05-19</tmEf>
<wf>흐리고 비</wf>
<tmn>17</tmn> <tmx>21</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>4</numEf>
<tmEf>2013-05-20</tmEf>
<wf>구름조금</wf>
<tmn>14</tmn>
<tmx>23</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>5</numEf>
<tmEf>2013-05-21</tmEf>
<wf>구름많음</wf>
<tmn>15</tmn>
<tmx>23</tmx>
<reliability>낮음</reliability>
</data>
<data>
<numEf>6</numEf>
<tmEf>2013-05-22</tmEf>
<wf>구름많음</wf>
<tmn>15</tmn>
<tmx>24</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>7</numEf>
<tmEf>2013-05-23</tmEf>
<wf>구름조금</wf>
<tmn>15</tmn>
<tmx>22</tmx>
<reliability>보통</reliability>
</data>
</location>
<location wl_ver="2" province="11G00000" city="11G00401">
<province code="11G00000">제주도</province>
<city code="11G00401">서귀포</city>
<data> <numEf>2</numEf>
<tmEf>2013-05-18</tmEf>
<wf>흐리고 비</wf>
<tmn>18</tmn>
<tmx>21</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>3</numEf>
<tmEf>2013-05-19</tmEf>
<wf>흐리고 비</wf>
<tmn>17</tmn>
<tmx>21</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>4</numEf>
<tmEf>2013-05-20</tmEf>
<wf>구름조금</wf>
<tmn>15</tmn>
<tmx>24</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>5</numEf>
<tmEf>2013-05-21</tmEf>
<wf>구름많음</wf>
<tmn>15</tmn>
<tmx>24</tmx>
<reliability>낮음</reliability>
</data>
<data>
<numEf>6</numEf>
<tmEf>2013-05-22</tmEf>
<wf>구름많음</wf>
<tmn>16</tmn>
<tmx>26</tmx>
<reliability>보통</reliability>
</data>
<data>
<numEf>7</numEf>
<tmEf>2013-05-23</tmEf>
<wf>구름조금</wf> <tmn>16</tmn> <tmx>23</tmx>
<reliability>보통</reliability>
</data>
</location>
</body>
</wid>
--------------------------------------------------------------------------------------weather.xml 입니다..
weather에 있는 내용을 읽어오는건 됩니다.
하지만
http://www.kma.go.kr/weather/forecast/mid-term-xml.jsp?stnId=184 여기 사이트 주소에 xml 내용을 읽어오는게 되지않습니다..
단순히 weather.jsp 의 url 에 다가 weather.xml 대신 이 도메인을 넣으면 읽어올수 없는건가요?
다른 것 추가 해야할것이 또이나요??..ㅜ
기상청의 XML 페이지의 HTTP 헤더가 text/xml이 아니고 text/plain으로 잘못 설정돼 있어서 자바스크립트의 XMLHttpRequest()로는 자료를 가져올 수 없습니다.
따라서 jQuery Ajax로 기상청 자료를 가져올 수 없답니다.
대신 php등 서버프로그래밍 언어로 소켓으로 접속해서 가져오는건 가능합니다.
정후닝님도 weather.jsp를 읽어오는 것을 보니 서버에서 먼저 기상청 자료를 가져오고 그것을 jquery로 불러오는 방식인듯 하네요.
결론은 기상청의 잘못입니다... ㅜㅜ;
항상 좋은 답변 감사드립니다 ^-^ㅎㅎ
날씨 API가 요즘 다 사라져버렸더라구요..
그래서 기상청 API를 하고 있었는데..
그렇다면 봇님 말씀이면 PHP를 이용해서 가져와야 한다는 말씀이신가욤//
하.. 제이쿼리도 이제 갓 배웠는데 ㅜㅋㅋ
알겠습니다 ㅎㅎ
저 그런데 text/plain이라는것은어디서 알수가 있는것인가요??
xml파일 보면 plain 이라는 것을 찾을수가없어서요..
php, jsp, asp등 서버 프로그래밍 언어로 해당 페이지 내용을 가져와서 작업을 진행하셔야 할 듯 해요~
text/plain은 헤더 정보로써 화면에 출력되지 않는 정보입니다.
https://en.wikipedia.org/wiki/Internet_media_type 이쪽을 참고 하시면 아시겠지만
gif 이미지를 브라우저에 불러오면 http 헤더에 image/gif 라는 정보를 함께 보내줍니다. 역시 화면에 출력되는건 이미지 뿐이겠죠