2013-08-19 185 views
0

這是我的XML:嵌套循環XML元素

<Scenario> 
    <Steps> 
     <Step Name="A"> 
     <Check Name="1" /> 
     <Check Name="2" /> 
     </Step> 
     <Step Name="B"> 
     <Check Name="3" /> 
     </Step> 
    </Steps> 
</Scenario> 

我通過XML元素試圖通過循環,對於每一個步驟,這樣做與該步驟的相應檢查元素的東西。所以:

foreach(Step step in Steps) { 
    foreach(Check in step) { 
     // Do something 
    } 
} 

它可能輸出類似:

A1 
A2 
B3 

的代碼我使用的是:

foreach (XElement step in document.Descendants("Step")) 
{ 
    // Start looping through that step's checks 
    foreach (XElement substep in step.Elements()) 
    { 

但是它沒有正確循環。上面的嵌套循環結構爲每個步驟的所有Check元素做了一些事情,而不僅僅是爲每個Step的子元素檢查一些東西。例如,我的代碼的輸出是:

A1 
A2 
A3 
B1 
B2 
B3 

我該如何修復我的循環?

回答

1

你的代碼沒問題。看到這個

foreach (XElement step in document.Descendants("Step")) 
{ 
    // Start looping through that step's checks 
    foreach (XElement substep in step.Elements()) 
    { 
     Console.WriteLine(step.Attribute("Name").Value + "" 
         + substep.Attribute("Name").Value); 
    } 
} 

輸出:

A1 
A2 
B3 
+0

@ gunr2171這一切依賴於XML是如何。鑑於有問題的例子,這很好。 – I4V

+0

你是對的......太奇怪了,我想這是一個不同的問題,導致循環輸出錯誤的東西。 –