반응형
* 기상청 날씨 (Weather) 정보 가져오기 예제...
전체 소스 코드
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace CSharp_Weather
{
public partial class Form1 : Form
{
string strURL = "http://www.kma.go.kr/weather/forecast/mid-term-xml.jsp";
string strCity = "";
public Form1()
{
InitializeComponent();
cboCity.SelectedIndex = 10;
lblToday.Text = DateTime.Now.ToString("yyyy-MM-dd");
}
private void cboCity_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
using (XmlReader xr = XmlReader.Create(strURL))
{
string strMsg = "";
XmlWriterSettings ws = new XmlWriterSettings();
ws.Indent = true;
bool bCheck = false;
int iCount = 0;
strCity = cboCity.Text;
while (xr.Read())
{
switch (xr.NodeType)
{
case XmlNodeType.CDATA:
{
txtMsg.Text = xr.Value.ToString().Replace("<br />", " ");
break;
}
case XmlNodeType.Element:
{
break;
}
case XmlNodeType.Text:
{
if (xr.Value.Equals(strCity))
{
bCheck = true;
}
if (bCheck)
{
DateTime dt;
bool b = DateTime.TryParse(xr.Value.ToString(), out dt);
if (b)
{
strMsg += "/";
}
strMsg += xr.Value + ",";
iCount += 1;
if (iCount > 36)
{
bCheck = false;
}
}
break;
}
case XmlNodeType.XmlDeclaration:
{
break;
}
case XmlNodeType.ProcessingInstruction:
{
break;
}
case XmlNodeType.Comment:
{
break;
}
case XmlNodeType.EndElement:
{
break;
}
}
}//while
//요일별로 짜르기
string[] strTmp = strMsg.Split('/');
//요일별 데이터
string[] strWh1 = strTmp[1].Split(',');
label3.Text = strWh1[0];
label5.Text = "최저: " + strWh1[2] + " ℃";
label6.Text = "최고: " + strWh1[3] + " ℃";
label7.Text = strWh1[1];
string[] strWh2 = strTmp[2].Split(',');
label11.Text = strWh2[0];
label10.Text = "최저: " + strWh2[2] + " ℃";
label9.Text = "최고: " + strWh2[3] + " ℃";
label8.Text = strWh2[1];
string[] strWh3 = strTmp[3].Split(',');
label15.Text = strWh3[0];
label14.Text = "최저: " + strWh3[2] + " ℃";
label13.Text = "최고: " + strWh3[3] + " ℃";
label12.Text = strWh3[1];
string[] strWh4 = strTmp[4].Split(',');
label27.Text = strWh4[0];
label26.Text = "최저: " + strWh4[2] + " ℃";
label25.Text = "최고: " + strWh4[3] + " ℃";
label24.Text = strWh4[1];
string[] strWh5 = strTmp[5].Split(',');
label23.Text = strWh5[0];
label22.Text = "최저: " + strWh5[2] + " ℃";
label21.Text = "최고: " + strWh5[3] + " ℃";
label20.Text = strWh5[1];
string[] strWh6 = strTmp[6].Split(',');
label19.Text = strWh6[0];
label18.Text = "최저: " + strWh6[2] + " ℃";
label17.Text = "최고: " + strWh6[3] + " ℃";
label16.Text = strWh6[1];
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
}
}
기상청 jsp 내용
콤보 박스 내용은 아래의 그림과 같이 속성에서 바로 등록 해 주었으며, ComboBox Index 가 아닌
Text 즉 도시 이름으로 체크 하기에 아이템 순서는 상관이 없습니다.
*결과 화면
반응형
'C# Programming' 카테고리의 다른 글
[C#] 32bit, 64 bit 운영 체제 체크하기 (1) | 2019.11.21 |
---|---|
[C#] 폴더 락 설정 및 해제 (Folder Lock) - 권한 설정 및 해제 (0) | 2019.11.18 |
[C#] DateTime 클래스 : 현재 선택된 달의 마지막 날짜 및 요일 구하기 (0) | 2019.11.10 |
[C#] string 을 int 및 double 형으로 변환 하기, null 체크 (0) | 2019.11.05 |
[C#] 응용 프로그램 재시작 예제 (0) | 2019.11.01 |