使用 xml 的 linq 中的 where 子句选择多个子项
本文关键字:选择 子句 where xml linq 中的 使用 | 更新日期: 2023-09-27 17:56:33
我有一点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忍者都可以告诉我我犯了什么样的菜鸟错误。任何帮助将不胜感激。
干杯
路易斯
您的查询太复杂了,请尝试以下操作:
var feeds = from feed in doc.Descendants("message")
select new
{
Message = feed.Value
};
我认为这样可以解决问题
var feeds = from feed in xmlDoc.Descendants("message")
where feed.IsEmpty == false
select feed;