2013-08-19 184 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

你是对的......太奇怪了,我想这是一个不同的问题,导致循环输出错误的东西。 –