从Linq到XML和C#中选择一个具有相同名称的节点中的一个节点

时间:2015-06-11 10:01:05

标签: c# xml linq

我遇到了一个XML文件和c#的问题。 xml文件如下所示:

<data>
   <weather>
       //some stuff
   </weather>

   <weather>
       //some stuff
   </weather>

   <weather>
       //some stuff
   </weather>

   <weather>
       //some stuff
   </weather>

现在我的问题:

我只需要导航到第三个节点。现在我觉得我可以解决这个问题:

act_tempereature = wData.Root.Element("weather").Element("maxtempC").Value;

但是,当然,它只选择具有该特定名称的Document目录中的第一个Element。那么我该如何导航到第3天或第2天?

如果已经提出这个问题,我很抱歉,因为我没有找到任何东西(也许我只是搜索了错误的关键字:/)

希望你能帮忙

1 个答案:

答案 0 :(得分:0)

您可以使用Elements()复数s来获取具有特定名称的所有元素:

act_tempereatures = wData.Root
                         .Elements("weather")
                         .Elements("maxtempC")
                         .Select(o => o.Value);

然后只需使用foreach循环来获取每个温度值。或者,如果您只需要一个特定位置的元素,请说第3个,尝试使用Skip()Take()

act_tempereature3 = wData.Root
                         .Elements("weather")
                         .Skip(2)
                         .Take(1)
                         .Elements("maxtempC")
                         .Select(o => o.Value);