Разбор XML и приведение элементов к типизированной коллекции с использованием LINQ, C # - PullRequest
3 голосов
/ 06 апреля 2009

У меня есть документ XML:

<statuses>
  <status>
  </status>
  <status>
  </status>
</statuses>

Я проанализировал это в XDocument и хочу использовать LINQ для выбора элементов в строго типизированную коллекцию классов Status (все элементы status являются простыми типами, либо string, либо int).

Есть идеи, как мне это сделать?

Спасибо!

1 Ответ

4 голосов
/ 06 апреля 2009

С XDocument, что-то вроде ниже:

    class Status
    {
        public int Id { get; set; }
        public string Text { get; set; }
    }
    static void Main()
    {
        string xml = @"<xml>
<status id='1'><text>abcdef</text></status>
<status id='2'><text>ghijkl</text></status>
<status id='3'><text>mnopqr</text></status></xml>";
        XDocument doc = XDocument.Parse(xml);

        var list = (from el in doc.Root.Elements("status")
                   select new Status
                   {
                       Id = (int)el.Attribute("id"),
                       Text = (string)el.Element("text")
                   }).ToList();
    }

Обратите внимание, что здесь также возможна XmlSerializer - сокращение объема кода, необходимого для написания и поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...