2011-11-04 19 views
0

我在一個大文件中有以下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

回答

1

有一些很好的例子在線:

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