2013-08-19 3 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()) 
    { 

Однако это не зацикливание должным образом. Вложенная структура цикла выше делает что-то для всех элементов проверки для каждого шага вместо того, чтобы просто что-то делать для дочернего элемента. Проверяйте элементы каждого шага. Например, вывод моего кода:

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

Вы правы ... так странно, я полагаю, что это другая проблема, вызывающая появление ложных ошибок. –

Смежные вопросы