본문 바로가기

namespace

(3)
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 에서 ..
[TIP] 네임스페이스 자동추가하기 어떤 클래스의 네임스페이스를 모를 때 사용하는 방법입니다. 예를들어 코드 상에서 HttpUtility라고만 치면 인텔리센스에 의해서 네임스페이스가 찾아지는 경우, 클래스명 마지막 글자(여기서는 y) 아래에 갈색의 납작한 네모가 생깁니다. 그것을 마우스오버하면, 자동으로 namespace를 추가할 수 있는 컨텍스트 메뉴가 펼쳐집니다. 하지만 마우스로 작은 네모에 마우스 오버하기가 여간 귀찮은 일이 아닌데요. 단축키가 있습니다. Ctrl + . (마침표) 그리고 엔터치시면 해당 네임스페이스가 자동추가 됩니다. [출처] 실버라이트 네이버 카페 (댓글로 등록되어 있음)
[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..