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