Foreach访问节点内的XM​​L元素

问题描述:

我在一个大文件中有以下XML元素,我试图迭代通过StayDateRange内的元素,我该如何实现?我有其他部分,我需要做类似的事情。Foreach访问节点内的XM​​L元素

<StDteRange timeUnitType="DAY"> 
    <strtTime>2009-06-28T00:00:00.000</strtTime> 
    <numOfUnits>4</numOfUnits> 
</StDteRange > 

IEnumerable<XElement> StDteRange = from el in root.Descendants(aw + "StDteRange ") 
select el; 

foreach (XElement el in StDteRange) 
{ 
     if (el.Name.LocalName=="strtTime") 
      Console.WriteLine((DateTime)el); 

     if (el.Name=="numOfUnits") 
      Console.WriteLine((int)el); 
} 
+0

你有没有考虑使用序列化导航控制数据? –

+0

你如何做到这一点?任何意见,表示赞赏。 – user67144

有一些很好的例子在线:

Scott Guthrie's Blog - Using Linq to XML

Hooked On Linq - Linq to XML

您可以创建一个简单的类来保存您的结果,然后在你的LINQ查询创建新的对象:

public class XMLResult() 
{ 
    public string localname; 
    public int Units; 
} 

IEnumerable<XMLResult> results = from el in root.Descendants(aw + "StDteRange ") 
    select new XMLResult() { 
      Name = el.Element("strtTime").value, 
      Units = el.Element("numOfUnits").value 
    }; 
+0

我收到并清空对象异常。请指教 – user67144

+0

我刚刚发布了一些Psudo代码,我稍微更新了一下,以包含实际的元素名称,以便它可以工作,但更多的是试图向您展示过程。 – John