Выбор нескольких дочерних элементов с помощью предложения where в linq для xml - PullRequest
0 голосов
/ 13 мая 2011

У меня есть этот бит XML

<status complete="false">
  <messages>
    <message>Message 1</message>
    <message>Message 2</message>
    <message>Message 3</message>
  </messages>
</status>

, который выглядит так, когда нет сообщений

<status complete="false">
  <messages/>
</status>

или также может выглядеть так

<status complete="false">
  <messages>
    <message/>
  </messages>
</status>

Я хочу иметь возможность анализировать сообщения («Сообщение 1», «Сообщение 2» и «Сообщение 3»), если они доступны, но у меня возникли некоторые проблемы, и я получаю только первое сообщение.Вот фрагмент C #, который я использую:

var feeds = from feed in xmlDoc.Descendants("messages")
            where (feed.Element("message") != null)
            select new
            {
                Message = feed.Element("message").Value
            };

foreach (var feed in feeds)
{
    Debug.WriteLine("Found a message");
}

Может ли какой-нибудь ниндзя .NET сказать мне, какую ошибку я делаю.Любая помощь будет принята с благодарностью.

Приветствия

Луис

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Ваш запрос слишком сложен, попробуйте это:

var feeds = from feed in doc.Descendants("message")
select new
{
  Message = feed.Value
};
1 голос
/ 13 мая 2011

Я думаю, что это сработает

var feeds = from feed in xmlDoc.Descendants("message")
            where feed.IsEmpty == false
            select feed;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...