본문 바로가기

XML

(5)
LINQ To Xml 사용할때 NameSpace 를 잊지 말고 사용해 주도록 합시다. 정말이지 가끔 까먹어서 한참을 헤매게 되는군요.. 예를 들어 다음과 같은 구문이 있다 합시다. 여기서 Source 에 해당하는 부분만을 뽑고 싶을때 만일 네임 스페이스가 없는 상태라면 다음과 같이 코드를 작성해 줍니다. var Source = from I in xml.Elements("Items").Elements("I") select I.Attribute("Source"); 하지만 실제 위의 경우에는 Collection 란에 xmlns 가 "http://schemas.microsoft.com/deepzoom/2008" 로 지정되어 있으므로 실제 프로그램을 돌려보면 Linq 는 에러도 내지 않고 그냥 해당되는 내용이 없는 상태로 출력되게 되지요. 네임스페이스가 있는 xml 을 Linq To Xml 에서 ..
SQL Server 2005 개발자 가이드[8/13] XML 개선기능 XML은 엔터프라이즈 비즈니스 솔루션의 핵심 기술이 되어 왔습니다. SQL Server 2005에서는 SQL Server 2000에서 지원하던 XML 지원 기능에 비해 한층 발전된 XML 기능을 지원하여, 관계형 데이터나 XML 데이터를 기반으로 솔루션을 쉽게 생성하도록 합니다. SQL Server 2000에서는 SELECT 문장에 FOR XML 절을 추가하여 데이터베이스 엔진에서 쿼리결과를 XML 형식으로 반환하도록 지정하거나, OPENXML 함수를 통해 XML 관련 기능을 지원하였습니다. SQL Server 2005에서는 XML 지원기능이 한층 강화되었습니다. FOR XML 절 개선 SQL Server 2005에서는 FOR XML 절의 기능이 개선되었고, SQL Server 데이터베이..
[Sample] Silverlight에서 XML을 읽는 두 가지 간단한 방법 개요 네이버 실버라이트 카페의 어느 회원분이 질문을 올리셨기에 한번 정리해 보았습니다. 이 포스트에서는 XML이 존재하는 경로에 따라 대응하는 두 가지 방법을 소개하겠습니다. 이 두 가지 방법이면 왠만한 상황에는 다 대체가 되실 것으로 생각합니다. (Cross Domain 정책에 의해 Blocking 되어있는 경우 제외. ^^;;) Case 1. xap파일에 포함시켜 배포하는 xml 파일을 읽는 경우 (xml 파일의 속성이 Content 등.) XDocument.Load(...)를 적극 활용합니다. Case 2. 외부에 존재하는 xml 파일을 읽는 경우 WebClient.DownloadStringAsync를 통해 xml파일의 내용을 string으로 받아온 후, XDocument.Parse(...)를 적극..
[Sample] Namespace와 LINQ to XML 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을 생성할 때 콜론(:)이 들어간 문자열을 허용하지 않기 때문입니다. 정답 XN..
[삽질방지] WebClient.Result 문자깨질 때 해결방법 혹시 중복일지도 모르겠습니다만 검색에서 잘 안나와서 그냥 올립니다. 실버라이트에서도 WebClient 이용해서 쉽게 OpenAPI의 XML 데이터 따위를 읽어올 수 있습니다. (실버라이트에서는 비동기만 지원) 그런데 가끔 UTF-8 등으로 인코딩된 XML 파일을 읽을 때 Result의 Unicode 문자들이 깨져 있는 것을 경험하실 겁니다. 이때의 해결방법은 간단합니다. WebClient에는 Encoding이란 프로퍼티가 있기 때문입니다. WebClient wc = new WebClient() { Encoding = Encoding.UTF8 }; 또는 클래식한 표현으로는 아래와 같이... WebClient wc = new WebClient(); wc.Encoding = Encoding.UTF8; 해주시면..