如何使用LINQ获取XML中的所有节点及其属性

时间:2012-03-23 22:02:23

标签: c# xml

我以meam为例,我可以得到

var collection = from c in el.Descendants("current_conditions")
                 select c;

只有node - current_conditions及其属性。

但是如何在没有新查询的情况下获取其他节点(forecast_conditions)(是否可以在一个查询中执行此操作?)? XML doc看起来像这样

<current_conditions>
 <condition data="Clear"/>
 <temp_f data="36"/>
 <temp_c data="2"/>
 <humidity data="Humidity: 70%"/>
 <icon data="/ig/images/weather/sunny.gif"/>
 <wind_condition data="Wind: N at 9 mph"/>
</current_conditions>
<forecast_conditions>
  <day_of_week data="Fri"/>
  <low data="28"/>
  <high data="54"/>
  <icon data="/ig/images/weather/mostly_sunny.gif"/>
  <condition data="Mostly Sunny"/> 
</forecast_conditions>

1 个答案:

答案 0 :(得分:1)

如果你为root元素执行doc.Element,你将获得root下的所有元素节点。

    var xElement = doc.Element(rootElementName);

要获取任何元素下的所有元素节点,可以使用Elements()

    XElement elem = xElement.Element(anyElementName);
    IEnumerable<XElement> nodeCollection = from allNodes in elem.Elements()
                                                            select allNodes;