2008-12-04 7 views
1

Приветствия!LINQ to XML Newbie Question: Возвращаемые значения узлов и делящиеся значения

У меня есть некоторые XML, как это:

<Root> 
    <AlphaSection> 
    . 
    . 
    . 
    </AlphaSection> 

    <BetaSection> 
     <Choices> 
      <SetA> 
       <Choice id="choice1"> 
        <Title>Choice 1 Title</Title> 
        <Body>Choice 1 Body</Body> 
       </Choice> 
       <Choice id="choice2"> 
        <Title>Choice 2 Title</Title> 
        <Body>Choice 2 Body</Body>     
       </Choice> 
      </SetA> 
      <SetB> 
       <Choice id="choice3"> 
        <Title>Choice 3 Title</Title> 
        <Body>Choice 3 Body</Body> 
       </Choice> 
       <Choice id="choice4"> 
        <Title>Choice 4 Title</Title> 
        <Body>Choice 4 Body</Body>     
       </Choice> 
      </SetB> 
     </Choices> 
    </BetaSection> 

    <GammaSection> 
    . 
    . 
    . 
    </GammaSection> 
</Root> 

В настоящее время я делаю следующее, чтобы получить идентификатор каждого выбора:

var choiceList = myXDoc.Root 
         .Element("BetaSection") 
         .Descendants("Choice") 
         .Select(element => new 
           { 
            ID = element.Attribute("id").Value, 
            // Title = ? 
            // Body = ? 
           }); 

Я хотел бы также получить значение в дочерние узлы Title и Body каждого Choice. Как я могу это сделать? Благодарю.

ответ

1
element => new { 
       ID = element.Attribute("id").Value, 
       Title = element.Element("Title").Value, 
       Body = element.Element("Body").Value 
       }); 
+0

Теперь я чувствую себя тупым :) Спасибо. – Bullines 2008-12-04 01:13:19

0

Также XElement предоставляет кучу напечатанных материала перегрузок, так что вы делаете такие вещи, как ...

element => new { 
       ID = (string)element.Attribute("id"), 
       title = (string)element.Element("Title"), 
       Body = (string)element.Element("Body") 
       });