LINQ to XML Вопрос новичка: возвращение значений узлов и значений-потомков - PullRequest
1 голос
/ 04 декабря 2008

Привет!

У меня есть такой 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 каждого варианта. Как бы я пошел об этом? Спасибо.

Ответы [ 2 ]

1 голос
/ 04 декабря 2008
element => new {
                ID = element.Attribute("id").Value,
                Title = element.Element("Title").Value,
                Body = element.Element("Body").Value
               });
0 голосов
/ 04 декабря 2008

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

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