2011-10-27 3 views
2

XML 파일이 하나입니다 : 나 이미지 태그와 두 행을 얻으려면Linq에 - 점점 루트 후손

<settings y="1" x="0"> 
    <prospect aksdj="sdf"> 
     <image path="images/1.jpg"/> 
    </prospect> 
    <prospect aksdfasdj="safafdf"> 
     <image path="images/2.jpg"/> 
    </prospect> 
</settings> 

.

XElement doc = XElement.Load(@"C:\Users\John\Desktop\File.xml"); 
var result = (from c in doc.Descendants("settings") 
         select new 
         { 
          name = c.Element("prospect").Value 
         }).ToList(); 

그러나, doc.Descendants ("설정") 널 :

내 코드는 이것이다. 왜 null입니까? 요소 어떤 <settings> 후손이없는 것을 -

+1

샘플 XML이 손상되었습니다. 마지막 줄은 닫는 태그 여야합니다. 실제 파일을 어떻게 대표합니까? –

+0

죄송합니다. 파일을 여기에 넣으려고 줄이면 실수로 삭제했습니다. ( –

답변

4

당신은 이미 <settings> 요소 인 요소를로드했습니다. (Descendants이 방법으로 당신에게 null을 반환하지 않습니다 -.. 그것은 당신에게 빈 시퀀스를 반환있어 큰 차이가있다)

당신이

XDocument doc = XDocument.Load("..."); 

로 변경할 경우 괜찮을한다 - 또는 단지 XElement으로로드하고 <settings> 요소를 가지고 있다고 가정하면 자손을 찾습니다 ...

+0

자손이 인 것을 확인했습니다. :) –