LINQ to XML через C # - PullRequest
       5

LINQ to XML через C #

5 голосов
/ 27 декабря 2010

Я новичок в LINQ.Я понимаю, что это цель.Но я не могу понять это.У меня есть набор XML, который выглядит следующим образом:

<Results>
  <Result>
    <ID>1</ID>
    <Name>John Smith</Name>
    <EmailAddress>john@example.com</EmailAddress>
  </Result>
  <Result>
    <ID>2</ID>
    <Name>Bill Young</Name>
    <EmailAddress>bill@example.com</EmailAddress>
  </Result>
</Results>

Я загрузил этот XML в XDocument следующим образом:

string xmlText = GetXML();
XDocument xml = XDocument.Parse(xmlText);

Теперь я пытаюсь получить результатыв формат POCO.Чтобы сделать это, я сейчас использую:

var objects = from results in xml.Descendants("Results")
              select new Results
              // I'm stuck

Как получить коллекцию элементов Result через LINQ?Я особенно озадачен навигацией по структуре XML на этом этапе моего кода.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 27 декабря 2010

Это вернет IEnumerable анонимного класса:

var q = from result in xml.Descendants
        select new
        {
            ID = result.Descendants("ID"),
            Name= result.Descendants("Name"),
            EmailAddress= result.Descendants("EmailAddress")
        };

или, если вы определили класс `Result, например ::

class Result
{
    public ID { get; set; }
    public Name { get; set; }
    public EmailAddress { get; set; }
}

, то:

var q = from result in xml.Descendants
        select new Result
        {
            ID = result.Descendants("ID"),
            Name = result.Descendants("Name"),
            EmailAddress = result.Descendants("EmailAddress")
        };

(возвращает IEnumerable<Result>)

0 голосов
/ 27 декабря 2010

Если вы новичок в LINQ, вы также найдете чрезвычайно полезные ссылки в этот вопрос

0 голосов
/ 27 декабря 2010

Если ваши дочерние элементы Results являются только элементами Result, вы можете получить их так:

var objects = from result in xml.Descendants
              select result;

Но в этом счастливом случае вы можете просто использовать xml.Descendants.

Если это не только элементы Result, то это подойдет:

var object = from result in xml.Descendants
             where result.Name == "Result"
             select result;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...