Для начала у меня есть этот XML-файл, который содержит рекурсивные родительско-дочерние элементы. Вот как выглядит XML:
<VARS>
<VAR>
<id>var_starting_point</id>
<name>Starting Point</name>
<values>
<value>
<id>http://Environment1URL.com</id>
<name>Enviornment 1</name>
<sub_vars>
<VAR>
<id>var_env1_data</id>
<name>Env1 Data</name>
<values>
<value>
<name>Data1</name>
<sub_var>
<VAR>
<id>var_db</id>
<name>DB</name>
<values>
<values>place-holder 1</values>
</values>
</VAR>
</sub_var>
</value>
<value>
<name>Data2</name>
<sub_var>
<VAR>
<id>var_db</id>
<name>DB</name>
<values>
<values>place-holder 2</values>
</values>
</VAR>
</sub_var>
</value>
</values>
</VAR>
</sub_vars>
</value>
<value>
<id>http://Environment2URL.com</id>
<name>Enviornment 2</name>
<sub_vars>
<VAR>
<id>var_env2_data</id>
<name>Env2 Data</name>
<values>
<value>
<name>Data1</name>
<sub_var>
<VAR>
<id>var_db</id>
<name>DB</name>
<values>
<values>place-holder 1</values>
</values>
</VAR>
</sub_var>
</value>
<value>
<name>Data2</name>
<sub_var>
<VAR>
<id>var_db</id>
<name>DB</name>
<values>
<values>place-holder 2</values>
</values>
</VAR>
</sub_var>
</value>
</values>
</VAR>
</sub_vars>
</value>
</values>
</VAR>
<VAR>
<id>var_version_data1</id>
<name>Data1 Version</name>
<values>
<value>
<name>1.1.1</name>
</value>
</values>
</VAR>
<VAR>
<id>var_version_data2</id>
<name>Data2 Version</name>
<values>
<value>
<name>2.2.2</name>
</value>
</values>
</VAR>
</VARS>
У меня есть элемент VARS, который содержит 1 или более элементов VAR, которые имеют идентификатор, имя и
массив значений, который содержит 1 или более элементов значения.
Элементы sub_var и id элемента value являются необязательными, имя
Элемент нет. Sub_var содержит те же вещи, что и VARS
и т. д.
Теперь я хочу создать дочерние поля со списком на основе того, что было выбрано в
родительский comboBox.
Например, если пользователь выбирает «Окружение 1» из
Стартовая точка comboBox, чем поле со списком Env1 Data должно появиться с
значения Env1. Затем, если пользователь выбирает «Data1», то поле со списком БД
должен быть заполнен "заполнитель 1".
Я работаю над этим часами и никуда не денусь. Я смог получить
1 слой работает не рекурсивно, однако несколько вложенных элементов доставляют мне головную боль.
Теперь я делаю это, сохраняя выбранный элемент во временной переменной, затем в выбранном мной обработчике измененных событий я очищаю панель стека и воссоздаю все поля со списком, основываясь на том, что было выбрано последним. Однако, похоже, это не работает должным образом с несколькими вложенными элементами.
Я просто ищу идеи и как бы вы подошли к этой проблеме.