Design: 2 jcomboboxes, lista box 2 zależy od wyboru z pola 1, danych z XML

Jestem przytłoczony próbą zaprojektowania rozwiązania tego problemu - jest to produkt uboczny braku doświadczenia.

Moim celem jest odczytanie pliku wejściowego XML, zapisanie informacji z XML i zapełnienie dwóch pól kombi danymi z XML. Zawartość drugiego pola kombi zmieni się w zależności od wyboru w pierwszym.

Biorąc pod uwagę tę strukturę 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>

Pierwsze pole kombi: musi zawierać tylko unikalne wartości znalezione w sekcji Rodzaj.

Drugie pole kombi: Zawiera WSZYSTKIE wpisy nazw z każdego węzła, którego rodzaj jest równy rodzajowi wybranemu w pierwszym polu kombi.

Odnośnie źródła XML: Jest utrzymywane i generowane zewnętrznie. Wartości w sekcji ID zawsze będą unikalne. Wartości w sekcji Nazwa zawsze będą unikalne. Schemat nigdy się nie zmieni. Nowe unikalne wartości mogą pojawić się w sekcji Rodzaj w przyszłości.

Moje proponowane rozwiązanie: Utwórz klasę XMLNode, aby reprezentować węzeł ze źródła XML. Członkowie klasy XMLNode odpowiadają znacznikom w każdym węźle. Zapętl wszystkie węzły i utwórz kod XMLNode dla każdego z nich. Podczas pętli przez węzły: Dodaj obiekty XMLNode w mapie mieszającej, z Keys = XMLNode.ID i vals = XMLNode. Utwórz tablicę unikalnych rodzajów.

Wypełnij pole kombi jednym z tablicy wpisów Kind. Wypełnij pole kombi dwa z danych Nazwa dla każdego.

Czy jest to właściwe podejście, czy przeoczyłem lepsze / łatwiejsze / bardziej eleganckie rozwiązanie? Jeśli jestem na dobrej drodze, czy są jakieś oczywiste wady proponowanego rozwiązania?

questionAnswers(2)

yourAnswerToTheQuestion