5주 실습강의 2009. 1학기, 소프트웨어 설계 및 실험(Ⅰ)
RSS RSS News 혹은 Blog 에서 주로 사용되는 컨텐츠 표현 방식 XML 기반의 문서 표준 RSS Feeds Really Simple Syndication Rich Site Summary News 혹은 Blog 에서 주로 사용되는 컨텐츠 표현 방식 XML 기반의 문서 표준 RSS Feeds
RSS HTML Content vs. RSS Content
RSS Format <Channel> <Item> <title> : 해당 channel의 title <link> : channel과 연관된 URL <description> : channel 에 대한 설명 <item> : channel이 가지고 있는 item 객체 <Item> <title> : 해당 item의 title <link> : item과 연관된 URL <description> : item 에 대한 설명 <author> :item을 작성한 author <pubDate>, <language>, <source> 등 다양
실습과제 – RSS Reader
UI Design Page.xaml Canvas 추가
Cross-Domain Problem Cross-domain 문제 접근 가능한 RSS feeder http://silverlight.net/blogs/microsoft/rss.aspx 접근 불가능한 RSS feeder http://www.daum.net/rss.xml?t__nil_copy=rss
RSS feed 연결 URL을 이용한 HTTP 호출 WebClient를 사용한 RSS feed 연결 WebClient HttpWebRequest / HttpWebResponse WebClient를 사용한 RSS feed 연결 Button과 연결된 함수에서 WebClient 객체 생성 DownloadStringCompleted / DownloadStringAsync 호출
RSS Data Parsing 참조 추가 - System.Xml.Linq Namespace 등록 - Using System.Xml.Linq;
RSS Data Parsing XDocument 객체 생성 Parsing XML을 담고있는 data를 정형화된 XML 객체로 생성 XDocument xmlData = Xdocument.Parse(xmlContent); Parsing XDocument의 item 속성 선택 xmlData.Descendants(“item”) Display(e.Result)로 호출 in svc_DownloadCompleted
RSSItem UserControl 추가 RSSItem.xaml - 생성 RSSItem – RSS의 item 하나하나를 담는 객체 3개의 TextBox : title, author, pubDate RSSItem의 TextBox에 내용 삽입
RSSItem 객체 뿌리기 Display 함수의 foreach 문 내에서... RSSItem 객체 생성 및 Canvas에 추가 Canvas의 지정된 위치로 RSSItem 객체 이동 위치 관련 변수 추가 double nTopMargin : 기본적인 Canvas의 위쪽 여백 double nLeftMargin : 기본적인 Canvas의 왼쪽 여백 double nMargin : RSSItem 간의 간격 int nRSSItem : 현재 추가된 RSSItem의 갯수 int nMaxCount : Canvas에 추가할 최대 RSSItem 갯수
추가구현 1 Button을 계속 누를경우 이전 내용이 사라지지 않고 남아있는 현상 제거
추가구현 2 RSSItem을 클릭했을 경우 RSS data에 있는 link 주소로 웹 페이지 연결 웹 페이지 연결방법 #1 using System.Windows.Browser; 추가 HtmlPage.PopupWindow(new Uri(Link), null, null); 웹 페이지 연결방법 #2 HyperlinkButton 추가 TargetName=“_blank” NavigateUri=“{Binding Link}”
추가구현 3 Cross-Domain Problem 해결 WCF Service 추가(WebClient 대신 사용) http://www.daum.net/rss.xml?t__nil_copy=rss 에 접근하여 데이터 가져오기 WCF Service 추가(WebClient 대신 사용) using System.Net; using System.IO;