'LINQ'에 해당되는 글 3건

  1. 2008/09/10 Silverlight에서 XML을 읽는 두 가지 간단한 방법
  2. 2008/07/24 Namespace와 LINQ to XML
  3. 2008/02/26 훈스닷넷 8회 닷넷 정기세미나 소식입니다. (1)
2008/09/10 21:58

Silverlight에서 XML을 읽는 두 가지 간단한 방법

개요

네이버 실버라이트 카페의 어느 회원분이 질문을 올리셨기에 한번 정리해 보았습니다.

이 포스트에서는 XML이 존재하는 경로에 따라 대응하는 두 가지 방법을 소개하겠습니다.
이 두 가지 방법이면 왠만한 상황에는 다 대체가 되실 것으로 생각합니다.
(Cross Domain 정책에 의해 Blocking 되어있는 경우 제외. ^^;;)

Case 1. xap파일에 포함시켜 배포하는 xml 파일을 읽는 경우 (xml 파일의 속성이 Content 등.)

XDocument.Load(...)를 적극 활용합니다.

Case 2. 외부에 존재하는 xml 파일을 읽는 경우

WebClient.DownloadStringAsync를 통해 xml파일의 내용을 string으로 받아온 후,
XDocument.Parse(...)를 적극 활용합니다.


샘플 프로젝트(Source)



위 샘플 프로젝트를 다운 받아 열어보시면 아래와 같은 솔루션 트리를 보실 수 있습니다.

 

테두리가 쳐져 있는 주요 파일을 설명드리면,

1. System.Xml.Linq는 LINQtoXML사용을 위해서 필요한 어셈블리로서 'Add Reference'를 통해
수동으로 추가시켜 주셔야 합니다.

LINQtoXML을 사용하기 위해서 System.Linq와 System.Xml.Linq
두가지 namespace가 모두 추가되어야 합니다.

2. Inner.xml은 xap 패키지에 포함이 되어 배포가 되며, 속성은 Content(내용)입니다.

Inner.xml

<?xml version="1.0" encoding="utf-8" ?>
<Items>
  <Item>Desk</Item>
  <Item>TV</Item>
  <Item>Table</Item>
  <Item>Kitchen</Item>
  <Item>Room</Item>
</Items>

3. Outer.xml은 외부에 존재하는 임의의 xml 파일을 대표합니다.
Open API 등을 통해 얻어온 XML 데이터라고 가정하고 이해하시면 되겠습니다.

Outer.xml

<?xml version="1.0" encoding="utf-8" ?>
<Items>
  <Item>Car</Item>
  <Item>Road</Item>
  <Item>Tree</Item>
  <Item>Park</Item>
  <Item>Mountain</Item>
</Items>


실행결과

사용자 삽입 이미지

보시는 바와 같이 두가지 파일을 모두 성공적으로 읽어서 Item의 Value만을 LINQ로 추출해 내었습니다.
워낙 간단한 소스라서 코드 설명은 생략합니다. 코드는 샘플 프로젝트를 참고하시기 바랍니다.
감사합니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

Trackback : http://gilverlight.net/trackback/2941 관련글 쓰기

2008/07/24 22:13

Namespace와 LINQ to XML

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="ButtonStyleSample.App"
             xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
             >
    <vsm:Application.Resources>
         <Style x:Key="myButtonStyle" TargetType="Button">
             ...생략
         </Style>
         <Style x:Key="yourButtonStyle" TargetType="Button">
             ...생략
         </Style>
         <Style x:Key="herButtonStyle" TargetType="Button">
             ...생략
         </Style>
         <Style x:Key="hisButtonStyle" TargetType="Button">
             ...생략
         </Style>
    </vsm:Application.Resources>
</Application>

string xml에 위의 내용이 들어있다고 가정하고,

XDocument xDoc = XDocument.Parse(xml);

위와 같이 xDoc을 준비해 놓고,

XML데이터에서 Style을 돌면서 x:Key의 Value값만 쏙쏙 뽑아내는 LINQ구문을 작성한다면
어떻게 하시겠습니까?


오답

첨엔 막연히 이렇게 해봤습니다.

var result = from c in xDoc.Descendants("Style")
                select (string)c.Attribute("x:Key").Value;

네, 에러가 납니다.
Attribute의 이름에는 콜론(:)을 추가할 수 없습니다.

Attribute메서드의 파라미터는 XName이구요.
XName을 생성할 때 콜론(:)이 들어간 문자열을 허용하지 않기 때문입니다.

정답

XNamespace x = "http://schemas.microsoft.com/winfx/2006/xaml";
var result = from c in xDoc.Descendants("Style")
                select (string)c.Attribute(x + "Key").Value;

XNamespace + string이 XName이 되도록 연산기호 +에 대해
오퍼레이트 오버라이딩이 잘 되어있더라구요.

x + "Key" 이런 식으로 사용하는 것은 썩 직관적이지 않아서 맘에 안드는데,
알고 나니까 잘 쓸 수는 있겠더라구요. ^^

하지만 역시 LINQ는 쓰면 쓸수록 편한 것 같습니다.

Enjoy your LINQ!



이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

Trackback : http://gilverlight.net/trackback/2904 관련글 쓰기

2008/02/26 09:07

훈스닷넷 8회 닷넷 정기세미나 소식입니다.

 
8회 정기세미나
- 일시 : 2008년 03월 15일(토) 13시 00분
- 장소 : 한국마이크로소프트 (포스코 센터 5층)
- 세미나 신청: http://www.hoons.kr/SeminarJoin.aspx 
 
세미나 Agenda
13:00~13:30
등 록
13:30-14:10
개발자를 위한 SQL Server 2008의 소개 / 이수겸
14:10-15:00
2008 MIX를 통하여 정리해보는 차세대 웹의 전략 / 김대우 박경훈
15:00~15:20
휴식
15:20~16:00
Jump to LINQ / 김수영,김시원
16:00~16:40
ASP.NET 3.5의 소개 / 서동진
16:40~17:00
휴 식
17:00~17:40
실버라이트 2.0 Now!  / 공인석,오일석
17:40~18:00
Live Q&A / 발표자
18:00~
경품추첨
발표 내용 소개

개발자를 위한 SQL Server 2008의 소개 / 이수겸

마이크로소프트가 SQL Server를 통해서 주장하는 데이터 플랫폼 비전을 개략적으로 살펴보고, 개발자 중심으로 SQL Server 2008의 새로운 기능을 소개합니다.
2008 MIX를 통하여 정리해보는 차세대 웹의 전략 / 김대우, 박경훈

 

3월 5일부터 7일까지 전세계적으로 기대하고 고대하던 MIX 행사가 열리게 됩니다. 이번 세션에서는 MIX행사에서 말하고 있는 Silverlight, ASP.NET 3.5, Windows Live 등의 기술을 통한 핵심 전략은 무엇인지 분석해 봅니다. 또한 여러 예제를 통한 새로운 비지니스 모델을 어떻게 창출해 낼 수 있을지 살펴보도록 하겠습니다.
Jump to LINQ / 김수영, 김시원

 

이제 VS 2008 출시가 바로 코앞으로 다가 왔습니다. 이전 신제품 출시와 마찬가지로 이번에도 많은 변화를 가져옵니다. 그 중에서도 LINQ가 이번에 새롭게 등장한 기술의 중심에 서있게 될 것입니다. LINQ를 위한 C# 3.0의 핵심 특징을 살펴보고 또한 LINQ 쿼리 구문 작성에 있어 성능 향상을 위한 팁들을 전해드리겠습니다. 이 세션은 C#의 사전 지식을 가지고 있는 분이라면 누구나 들을 수 있습니다.
ASP.NET 3.5의 소개 / 서동진

 

ASP.NET 3.5 Extension이 새롭게 탄생할 예정입니다. 새로원진 ASP.NET 3.5의 주요 기능(ASP.NET AJAX Improvements, MVC, Dynamic Data Support, Silverlight Support, Data Service)에 대해서 살펴보고 이러한 기술들을 기존의 기술들과 어떻게 연동되고 또한 어떻게 활용해야 될지 살펴보도록 하겠습니다.
실버라이트 2.0 NOW! / 공인석, 오일석

 

2008년 3월, MIX08에서는 더욱 강력해진 런타임 엔진과 기능들로 무장하고 버전업까지 마친 실버라이트 2.0 Beta가 소개될 예정입니다. 실버라이트 2.0 Beta는 발표후 빠른 시일 내에 Go-Live 라이선스가 제공되어 서비스가 가능하므로 그간 RIA에 목말랐던 닷넷 개발자에게 단비와 같은 존재가 될 것입니다. 이 세션에서는 새로워진 실버라이트 2.0의 주요 구성과 깜짝 놀랄만 한 기능과 데모를 소개하고 향후 RIA 시장에서의 새로운 패러다임과 전략을 제시합니다.
강사 소개
김대우 

한국마이크로소프트 개발자 및 플랫폼 사업 총괄부서 웹 플랫폼 팀 근무
현) Web Developer Evangelist
박경훈 

HOONS닷넷 사이트 운영자
다수 닷넷 기술서적 집필및 번역
Microsoft Visual C# MVP(2005~2008)
이수겸 

현) 올랩컨설팅 선임
MCDBA / MCSD
http://bybi.tistory.com
서동진 

HOONS닷넷 ASP.Net 시삽
현) MySpace Developer
Microsoft ASP.Net MVP
MCAD / MCSD
김수영 

HOONS 닷넷 C#.NET 시삽
현) 네오위즈 게임즈
Microsoft  Visual C# MVP
MCAD / MCSD
http://www.dotnetngene.kr

김시원 

HOONS 닷넷 C#.NET 시삽
현) 이스트소프트
http://loveciel.tistory.com

공인석 

블로그 [유령회사 공도소프트] 운영자.
HOONS닷넷 실버라이트 시삽.
SBS NView, MNet TVDeep 등 다수의 실버라이트 프로젝트 수행.
MIX07이래로 실버라이트에 올인 러쉬 중.
오일석 

HOONS닷넷 실버라이트 시삽
블로그 http://onestone.tistory.com
플래시 개발자에서 실버라이트 개발자로 전향
세미나 장소


한국 마이크로소프트 - 포스코 센터 5층


 
경품안내


(Programming WCF Service 한글판 - 2권)

(Programming 한글판 Professional Ajax - 2권)

(Programming 한글판 ASP.NET 2.0 Website Programming : 문제 분석-설계-솔루션 제작 - 2권)

(Programming 알기 쉬운 마이크로소프트 ASP.NET AJAX - 2권)
 

선착순 제공 예정 경품

스폰서
  
좋은 시간이 될 것 같습니다. 많은 참여 부탁드립니다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 1

Trackback : http://gilverlight.net/trackback/2730 관련글 쓰기

  1. BlogIcon 길버트 2008/02/26 09:12 address edit & del reply

    가로 사이즈가 780이라서 제 블로그에서 잘리네요!