2013-03-13 5 views
0

XElement으로 개체를 만드는 방법은 무엇입니까? 목록을 만들 수는 있지만 목록이 아닌 단일 개체 만 원합니다.xml에서 개체를 만드는 방법

여기 내 코드입니다 :

XElement elem = XElement.Load(path); 
var myList = from n in elem.Descendants("NodeNumber1") 
      select new 
      { 
       Name = n.Attribute("Name").Value, 
       MyObj = from o in n.Descendants("NodeChild") 
         select new 
         { 
          var1 = o.Descendants("var1").FirstOrDefault().Value, 
          var2 = o.Descendants("var2").FirstOrDefault().Value, 
         } 
      }; 

NodeChild 한 번 NodeNumber1에, 그래서 개체로하지리스트로합니다. var1var2NodeChild에 한 번 정의되어 있지만 FirstOrDefault을 사용하므로 문제가되지 않습니다.

어떻게 목록으로 만들지 않고 단일 개체로 만들겠습니까?

+0

그럼 당신은 여기에 출력이 "수준"있어 - 이름 /하여 MyObj 하나, 그리고 VAR1/VAR2과 하나. 단 하나를 만들고 싶니? (예제 XML과 예상 된 출력이 유용 할 것입니다.) –

+0

이름이 이미 있습니다 - 단수이며, MyObj는 Var1/Var2가있는 목록으로,이 목록이 단일 객체가되기를 원합니다. –

+0

그래서'myList'를 여전히리스트로 원하십니까? 샘플 XML과 예상 결과를 사용하여 질문이 혼란스럽고 훨씬 명확하게 설명 될 수 있습니까? 다음 번에 이것을 명심하십시오. –

답변

1
var axe = elem.Descendants("NodeNumber1") 
       .Select(n => new 
       { 
        Name= n.Attribute("Name").Value, 
        MyObj= from o in n.Descendants("NodeChild") 
          select new 
          { 
           var1= o.Descendants("var1").FirstOrDefault().Value, 
           var2= o.Descendants("var2").FirstOrDefault().Value, 
          } 
       }) 
       .First(); 

또는 기존 쿼리를 사용 :

var axe = axesList.First(); 
+0

당신의 제안이 효과가있었습니다. 내부 목록이 외부 목록이 아닌 단일 대상이되기를 원했기 때문에 귀하의 답변을 편집했습니다. –

관련 문제