Дизайн: 2 jcombobox, список блока 2 зависит от выбора из блока 1, данные из XML
Я ошеломлен попыткой найти решение этой проблемы - это побочный продукт неопытности.
Моя цель - прочитать входной файл XML, сохранить информацию из XML и заполнить два поля со списком данными из XML. Содержимое второго поля со списком будет меняться в зависимости от выбора в первом.
Учитывая эту структуру XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Category xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Node>
<ID>Unique string</ID>
<Name>Unique string</Name>
<Code>Generic string<Code>
<Kind>Generic string</Kind>
<Frame>Generic string</Frame>
...
</Node>
...
</Category>
Первое поле со списком: должно содержать только уникальные значения, найденные в разделе «Вид».
Второе поле со списком: содержит ВСЕ записи имени от каждого узла, вид которого равен виду, выбранному в первом поле со списком.
Что касается источника XML: он поддерживается и генерируется извне. Значения в разделе идентификаторов всегда будут уникальными. Значения в разделе Имя всегда будут уникальными. Схема (предположительно) никогда не изменится. Новые уникальные значения могут появиться в разделе Kind в будущем.
Мое предлагаемое решение: создать класс XMLNode для представления узла из источника XML. Члены класса XMLNode соответствуют тегам в каждом узле. Переберите все узлы и создайте XMLNode для каждого. При прохождении по узлам: добавьте объекты XMLNode в хэш-карту, указав Keys = XMLNode.ID и vals = XMLNode. Создайте массив уникальных видов.
Заполните поле со списком один из массива записей вида. Заполните поле со списком два из данных имени для каждого.
Это подходящий подход, или я упустил лучшее / более легкое / более элегантное решение? Если я на правильном пути, есть ли очевидные недостатки в моем предложенном решении?