Java
003. HTML 파싱하기 - 속성읽기
top2blue
2015. 7. 29. 17:32
속성읽기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; // 속성으로 읽기 public class Jsoup09 { public static void main(String[] args) { Document document = null; try { String url = "http://www.kma.go.kr/XML/weather/sfc_web_map.xml"; document = Jsoup.connect(url).get(); Elements date = document.select("weather"); String dateStr = date.attr("year") + "년 "; dateStr += date.attr("month") + "월 "; dateStr += date.attr("day") + "일 "; dateStr += date.attr("hour") + "시"; System.out.println(dateStr); Elements locals = document.select("local"); for (Element local : locals) { String area = local.text(); String desc = local.attr("desc"); if(desc.trim().equals("-")) desc=""; String ta = local.attr("ta"); System.out.print(area +"(현재온도 : " + ta); System.out.println((!desc.equals("") ? ", " : "") + desc + ")"); } } catch (IOException e) { e.printStackTrace(); } } } | cs |
원본
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <current xmlns="current"> <weather year="2015" month="07" day="29" hour="16"> <local stn_id="95" icon="" desc="-" ta="25.8" rn_hr1="61.0">철원</local> <local stn_id="98" icon="" desc="-" ta="27.0" rn_hr1="12.9">동두천</local> <local stn_id="99" icon="" desc="-" ta="27.5" rn_hr1="10.1">파주</local> <local stn_id="100" icon="" desc="-" ta="23.0" rn_hr1="5.5">대관령</local> <local stn_id="101" icon="04" desc="흐림" ta="26.6" rn_hr1="8.8">춘천</local> <local stn_id="102" icon="17" desc="박무" ta="28.4" rn_hr1="0.2">백령도</local> <local stn_id="104" icon="03" desc="구름많음" ta="30.0" rn_hr1="1.0">북강릉</local> <local stn_id="105" icon="" desc="-" ta="30.1" rn_hr1="1.0">강릉</local> <local stn_id="106" icon="" desc="-" ta="27.8" rn_hr1="3.0">동해</local> <local stn_id="108" icon="04" desc="흐림" ta="28.2" rn_hr1="4.0">서울</local> <local stn_id="112" icon="17" desc="박무" ta="28.0" rn_hr1="24.4">인천</local> <local stn_id="114" icon="" desc="-" ta="29.0" rn_hr1="16.5">원주</local> <local stn_id="119" icon="17" desc="박무" ta="28.8" rn_hr1="64.7">수원</local> <local stn_id="121" icon="" desc="-" ta="25.4" rn_hr1="13.6">영월</local> <local stn_id="127" icon="" desc="-" ta="28.2" rn_hr1="44.8">충주</local> <local stn_id="129" icon="03" desc="구름많음" ta="29.0" rn_hr1="25.8">서산</local> <local stn_id="130" icon="" desc="-" ta="28.6" rn_hr1="0.9">울진</local> <local stn_id="131" icon="17" desc="박무" ta="29.7" rn_hr1="15.0">청주</local> <local stn_id="133" icon="17" desc="박무" ta="30.1" rn_hr1="31.8">대전</local> <local stn_id="135" icon="" desc="-" ta="30.2" rn_hr1="4.5">추풍령</local> <local stn_id="136" icon="04" desc="흐림" ta="27.5" rn_hr1="17.0">안동</local> <local stn_id="137" icon="" desc="-" ta="30.2" rn_hr1="21.2">상주</local> <local stn_id="138" icon="02" desc="구름조금" ta="32.9" rn_hr1="0.4">포항</local> <local stn_id="143" icon="04" desc="흐림" ta="30.7" rn_hr1="0.5">대구</local> <local stn_id="146" icon="04" desc="흐림" ta="29.7" rn_hr1="2.3">전주</local> <local stn_id="155" icon="02" desc="구름조금" ta="31.1" rn_hr1="0.0">창원</local> <local stn_id="159" icon="17" desc="박무" ta="29.4" rn_hr1="2.5">부산</local> <local stn_id="172" icon="" desc="-" ta="32.4" rn_hr1="0.0">고창</local> <local stn_id="175" icon="" desc="-" ta="30.0" rn_hr1="0.1">진도(첨찰산)</local> <local stn_id="185" icon="" desc="-" ta="27.8" rn_hr1="0.0">고산</local> <local stn_id="201" icon="" desc="-" ta="27.3" rn_hr1="2.5">강화</local> <local stn_id="202" icon="" desc="-" ta="27.1" rn_hr1="12.0">양평</local> <local stn_id="203" icon="" desc="-" ta="28.8" rn_hr1="24.8">이천</local> <local stn_id="211" icon="" desc="-" ta="25.1" rn_hr1="6.0">인제</local> <local stn_id="212" icon="" desc="-" ta="27.8" rn_hr1="3.5">홍천</local> <local stn_id="216" icon="" desc="-" ta="25.5" rn_hr1="5.3">태백</local> <local stn_id="217" icon="" desc="-" ta="24.9" rn_hr1="11.5">정선군</local> <local stn_id="221" icon="" desc="-" ta="25.9" rn_hr1="17.0">제천</local> <local stn_id="226" icon="" desc="-" ta="28.2" rn_hr1="17.0">보은</local> <local stn_id="232" icon="" desc="-" ta="30.0" rn_hr1="22.0">천안</local> <local stn_id="235" icon="" desc="-" ta="28.8" rn_hr1="5.3">보령</local> <local stn_id="236" icon="" desc="-" ta="30.8" rn_hr1="8.5">부여</local> <local stn_id="238" icon="" desc="-" ta="31.3" rn_hr1="11.0">금산</local> <local stn_id="243" icon="" desc="-" ta="32.5" rn_hr1="0.1">부안</local> <local stn_id="245" icon="" desc="-" ta="33.1" rn_hr1="0.0">정읍</local> <local stn_id="248" icon="" desc="-" ta="30.1" rn_hr1="0.5">장수</local> <local stn_id="251" icon="" desc="-" ta="32.5" rn_hr1="0.5">고창군</local> <local stn_id="253" icon="" desc="-" ta="33.2" rn_hr1="0.0">김해시</local> <local stn_id="254" icon="" desc="-" ta="33.1" rn_hr1="0.3">순창군</local> <local stn_id="255" icon="" desc="-" ta="32.4" rn_hr1="0.0">북창원</local> <local stn_id="257" icon="" desc="-" ta="32.6" rn_hr1="0.0">양산시</local> <local stn_id="261" icon="" desc="-" ta="29.8" rn_hr1="0.0">해남</local> <local stn_id="263" icon="" desc="-" ta="32.5" rn_hr1="0.0">의령군</local> <local stn_id="264" icon="" desc="-" ta="32.9" rn_hr1="0.2">함양군</local> <local stn_id="271" icon="" desc="-" ta="25.3" rn_hr1="11.0">봉화</local> <local stn_id="272" icon="" desc="-" ta="27.9" rn_hr1="20.0">영주</local> <local stn_id="273" icon="" desc="-" ta="27.7" rn_hr1="17.5">문경</local> <local stn_id="276" icon="" desc="-" ta="27.9" rn_hr1="1.5">청송군</local> <local stn_id="277" icon="" desc="-" ta="28.9" rn_hr1="1.0">영덕</local> <local stn_id="278" icon="" desc="-" ta="27.9" rn_hr1="0.5">의성</local> <local stn_id="279" icon="" desc="-" ta="28.8" rn_hr1="5.2">구미</local> <local stn_id="281" icon="" desc="-" ta="31.0" rn_hr1="2.0">영천</local> <local stn_id="283" icon="" desc="-" ta="32.8" rn_hr1="0.3">경주시</local> <local stn_id="284" icon="" desc="-" ta="32.2" rn_hr1="0.0">거창</local> <local stn_id="288" icon="" desc="-" ta="33.5" rn_hr1="0.0">밀양</local> <local stn_id="162" icon="" desc="-" ta="29.1">통영</local> <local stn_id="184" icon="01" desc="맑음" ta="33.9">제주</local> <local stn_id="90" icon="" desc="-" ta="24.8">속초</local> <local stn_id="140" icon="" desc="-" ta="30.7">군산</local> <local stn_id="168" icon="02" desc="구름조금" ta="29.5">여수</local> <local stn_id="266" icon="" desc="-" ta="34.2">광양시</local> <local stn_id="260" icon="" desc="-" ta="34.1">장흥</local> <local stn_id="165" icon="02" desc="구름조금" ta="31.6">목포</local> <local stn_id="247" icon="" desc="-" ta="32.4">남원</local> <local stn_id="152" icon="02" desc="구름조금" ta="34.3">울산</local> <local stn_id="268" icon="" desc="-" ta="30.8">진도군</local> <local stn_id="170" icon="" desc="-" ta="29.3">완도</local> <local stn_id="189" icon="" desc="-" ta="29.2">서귀포</local> <local stn_id="244" icon="" desc="-" ta="32.0">임실</local> <local stn_id="188" icon="" desc="-" ta="30.8">성산</local> <local stn_id="115" icon="04" desc="흐림" ta="28.5">울릉도</local> <local stn_id="285" icon="" desc="-" ta="33.7">합천</local> <local stn_id="259" icon="" desc="-" ta="31.5">강진군</local> <local stn_id="174" icon="" desc="-" ta="33.3">순천</local> <local stn_id="156" icon="03" desc="구름많음" ta="32.5">광주</local> <local stn_id="192" icon="" desc="-" ta="31.7">진주</local> <local stn_id="262" icon="" desc="-" ta="31.3">고흥</local> <local stn_id="295" icon="" desc="-" ta="33.5">남해</local> <local stn_id="258" icon="" desc="-" ta="32.8">보성군</local> <local stn_id="294" icon="" desc="-" ta="28.7">거제</local> <local stn_id="169" icon="17" desc="박무" ta="27.0">흑산도</local> <local stn_id="252" icon="" desc="-" ta="32.3">영광군</local> <local stn_id="289" icon="" desc="-" ta="32.8">산청</local> </weather> </current> | cs |
결과
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | 2015년 07월 29일 17시 철원(현재온도 : 26.1) 동두천(현재온도 : 27.0) 파주(현재온도 : 26.9) 대관령(현재온도 : 23.2) 춘천(현재온도 : 27.0, 흐림) 백령도(현재온도 : 27.4, 박무) 북강릉(현재온도 : 30.0, 구름많음) 강릉(현재온도 : 31.0) 동해(현재온도 : 27.2) 서울(현재온도 : 28.5, 흐림) 인천(현재온도 : 28.0, 박무) 원주(현재온도 : 28.7) 수원(현재온도 : 29.4, 박무) 영월(현재온도 : 26.0) 충주(현재온도 : 28.6) 서산(현재온도 : 28.4, 구름조금) 울진(현재온도 : 29.6) 청주(현재온도 : 30.5, 박무) 대전(현재온도 : 31.0, 구름많음) 추풍령(현재온도 : 29.1) 안동(현재온도 : 28.0, 흐림) 상주(현재온도 : 31.1) 포항(현재온도 : 32.9, 구름많음) 대구(현재온도 : 31.9, 구름많음) 전주(현재온도 : 31.1, 구름많음) 창원(현재온도 : 30.1, 구름조금) 부산(현재온도 : 28.6, 박무) 고창(현재온도 : 31.9) 진도(첨찰산)(현재온도 : 29.3) 고산(현재온도 : 27.0) 강화(현재온도 : 27.7) 양평(현재온도 : 27.5) 이천(현재온도 : 27.6) 인제(현재온도 : 25.1) 홍천(현재온도 : 27.1) 태백(현재온도 : 26.3) 정선군(현재온도 : 25.7) 제천(현재온도 : 25.6) 보은(현재온도 : 29.0) 천안(현재온도 : 31.3) 보령(현재온도 : 27.9) 부여(현재온도 : 30.3) 금산(현재온도 : 30.9) 부안(현재온도 : 31.7) 정읍(현재온도 : 33.3) 장수(현재온도 : 30.0) 고창군(현재온도 : 32.5) 김해시(현재온도 : 31.9) 순창군(현재온도 : 33.1) 북창원(현재온도 : 30.3) 양산시(현재온도 : 32.0) 해남(현재온도 : 29.1) 의령군(현재온도 : 31.9) 함양군(현재온도 : 33.3) 봉화(현재온도 : 25.5) 영주(현재온도 : 28.3) 문경(현재온도 : 27.6) 청송군(현재온도 : 28.7) 영덕(현재온도 : 29.4) 의성(현재온도 : 28.7) 구미(현재온도 : 29.6) 영천(현재온도 : 30.2) 경주시(현재온도 : 32.6) 거창(현재온도 : 30.6) 밀양(현재온도 : 31.9) 통영(현재온도 : 28.2) 제주(현재온도 : 33.2, 맑음) 속초(현재온도 : 25.9) 군산(현재온도 : 30.5) 여수(현재온도 : 29.2, 구름조금) 광양시(현재온도 : 33.6) 장흥(현재온도 : 33.5) 목포(현재온도 : 31.2, 맑음) 남원(현재온도 : 32.4) 울산(현재온도 : 33.8, 구름많음) 진도군(현재온도 : 30.1) 완도(현재온도 : 29.6) 서귀포(현재온도 : 27.5) 임실(현재온도 : 32.4) 성산(현재온도 : 29.9) 울릉도(현재온도 : 27.9, 흐림) 합천(현재온도 : 33.5) 강진군(현재온도 : 30.1) 순천(현재온도 : 33.4) 광주(현재온도 : 32.0, 구름많음) 진주(현재온도 : 31.6) 고흥(현재온도 : 30.8) 남해(현재온도 : 32.7) 보성군(현재온도 : 33.1) 거제(현재온도 : 29.0) 흑산도(현재온도 : 26.1, 박무) 영광군(현재온도 : 31.5) 산청(현재온도 : 32.3) | cs |
Element의 모든 속성읽기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Attribute; import org.jsoup.nodes.Attributes; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; // 속성으로 읽기 public class Jsoup10 { public static void main(String[] args) { Document document = null; try { String url = "http://www.kma.go.kr/XML/weather/sfc_web_map.xml"; document = Jsoup.connect(url).get(); // Element의 모든 속성읽기 Elements date = document.select("weather"); // attributes()로 모든 속성읽기 Attributes attributes = date.get(0).attributes(); for(Attribute a : attributes){ System.out.println(a.getKey() + " : " + a.getValue()); } } catch (IOException e) { e.printStackTrace(); } } } | cs |
결과
1 2 3 4 | year : 2015 month : 07 day : 29 hour : 17 | cs |