Дизайн: 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. Создайте массив уникальных видов.

Заполните поле со списком один из массива записей вида. Заполните поле со списком два из данных имени для каждого.

Это подходящий подход, или я упустил лучшее / более легкое / более элегантное решение? Если я на правильном пути, есть ли очевидные недостатки в моем предложенном решении?

Ответы на вопрос(2)

Ваш ответ на вопрос