C# 我需要一些使用Linq解析XML的帮助

C# 我需要一些使用Linq解析XML的帮助,c#,xml,linq,parsing,linq-to-xml,C#,Xml,Linq,Parsing,Linq To Xml,我不熟悉C#和XML,正在尝试为MediaPortal开发一个小型天气插件。我试图在Visual C#2010 Express中使用Linq解析一些XML,但遇到了一个障碍 下面是我试图解析的XML的一个子集: <forecast> <period textForecastName="Monday">Monday</period> <textSummary>Sunny. Low 15. High 26.</textSummary>

我不熟悉C#和XML,正在尝试为MediaPortal开发一个小型天气插件。我试图在Visual C#2010 Express中使用Linq解析一些XML,但遇到了一个障碍

下面是我试图解析的XML的一个子集:

<forecast>
  <period textForecastName="Monday">Monday</period>
  <textSummary>Sunny. Low 15. High 26.</textSummary>
<temperatures>
  <textSummary>Low 15. High 26.</textSummary>
  <temperature unitType="metric" units="C" class="high">26</temperature>
  <temperature unitType="metric" units="C" class="low">15</temperature>
  </temperatures>
</forecast>
我的代码使用占位符注释,但我不知道如何使用Linq从XML中提取高(26)和低(15)。我可以从“Temperature”手动解析它,但我希望我能学到更多关于XML结构的知识

谢谢你的帮助。
道格

看起来你想要的是:

Highs = x.Descendants("temperature")
         .Where(e => (string)e.Attribute("class") == "high")
这将查找唯一的
温度
子体(如果没有或有多个,它将抛出),该子体具有属性
,值
,然后将其值强制转换为整数

但这并不完全清楚

一个
预测
元素是否可以有多个
温度
元素?一个
temperatures
元素是否可以有多个
temperature
元素具有
class==“high”
?您想如何处理不同的
单位类型

要将元素取出,可以执行以下操作:

Highs = x.Descendants("temperature")
         .Where(e => (string)e.Attribute("class") == "high")

谢谢我只需要得到高和低元素,所以我使用了你文章中的最后一行代码。现在我要去学习.Where和.Attribute。(我对这东西真的很陌生!)
Highs = x.Descendants("temperature")
         .Where(e => (string)e.Attribute("class") == "high")