Лучший способ обновления вложенного XML

#xml #flex4

#xml #flex4

Вопрос:

У меня есть несколько строк кода:

  lev = arrInfo[1]
 xml = sxml;
 switch(lev){
 case 0: xml = sxml;
 break;
 case 1: var xl:XML = arrInfo[0];
 xml.sublevels = xl;
 break;
 case 2: xl = arrInfo[0];
 xml.sublevels.sublevel.sublevels = xl;
 break;
 case 3: xl = arrInfo[0];                                                                             
 xml.sublevels.sublevel.sublevels.sublevel.sublevels = xl;
 break;
}
  

В инструкции switch он проверяет, к какому уровню подуровней следует присоединить xl XML, и, основываясь на уровне, переходит к его присоединению. Итак, если уровень третий, это означает, что xl должен заменить подуровни на этом уровне. В случае 3: xl заменяет подуровни в узле подуровня узла подуровней (уровень-1), и если у меня есть случай 4: тогда xl должен заменить подуровни узла подуровня (4-1) подуровней. Это выглядело бы примерно так:

  case 4: xl = arrInfo[0];                                                                             
 xml.sublevels.sublevel.sublevels.sublevel.sublevels.sublevel.sublevels = xl;
  

Однако это означает, что я должен сделать это вручную, если я знаю количество подуровней во вложенном XML, но это потребует слишком много работы, если уровней было 20 или кто-то добавляет новый уровень, который не был проверен вручную в инструкции switch.

Кто-нибудь знает, как я могу решить эту проблему?

Комментарии:

1. Это выглядит запутанным. Зачем вам это нужно? Вы могли бы рекурсивно перебирать потомков вашего xml и добавлять другой xml-узел с помощью appendChild() , но, возможно, есть более простой способ решить эту проблему. Какие данные вы сохраняете? Обязательно ли это быть настолько вложенным?

2. @George Profenza, более простой способ — убедиться, что xml является таким же измененным. я уже решил эту проблему, но я не знаю, как сделать это очевидным для сообщества stackflow : (

3. прохладный. вы должны иметь возможность закрыть / удалить свой собственный вопрос