Design: 2 Jcomboboxen, Box 2 Liste abhängig von Auswahl aus Box 1, Daten aus XML

Ich bin überwältigt von dem Versuch, eine Lösung für dieses Problem zu finden - es ist ein Nebenprodukt von Unerfahrenheit.

Mein Ziel ist es, eine XML-Eingabedatei zu lesen, die Informationen aus dem XML-Code zu speichern und zwei Kombinationsfelder mit Daten aus dem XML-Code zu füllen. Der Inhalt des zweiten Kombinationsfelds ändert sich basierend auf der Auswahl im ersten.

In Anbetracht dieser XML-Struktur:

<?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>

Erstes Kombinationsfeld: Darf nur die eindeutigen Werte enthalten, die im Abschnitt Art enthalten sind.

Zweites Kombinationsfeld: Enthält ALLE Namenseinträge von jedem Knoten, dessen Art der in dem ersten Kombinationsfeld ausgewählten Art entspricht.

Zur XML-Quelle: Sie wird extern gepflegt und generiert. Die Werte im ID-Bereich sind immer eindeutig. Die Werte im Abschnitt Name sind immer eindeutig. Das Schema wird sich (angeblich) nie ändern. Neue eindeutige Werte werden möglicherweise in Zukunft im Abschnitt "Art" angezeigt.

Meine vorgeschlagene Lösung: Erstellen Sie eine Klasse XMLNode, um einen Knoten aus der XML-Quelle darzustellen. Mitglieder der Klasse XMLNode entsprechen den Tags in jedem Knoten. Durchlaufen Sie alle Knoten und erstellen Sie für jeden einen XMLNode. Beim Durchlaufen von Knoten: Fügen Sie XMLNode-Objekte in einer Hash-Map mit Keys = XMLNode.ID und vals = the XMLNode hinzu. Erstellen Sie eine Reihe einzigartiger Arten.

Füllen Sie das Kombinationsfeld 1 aus dem Array der Kind-Einträge aus. Füllen Sie das Kombinationsfeld zwei aus den jeweiligen Namensdaten aus.

Ist dies ein angemessener Ansatz, oder habe ich eine bessere / einfachere / elegantere Lösung übersehen? Wenn ich auf dem richtigen Weg bin, gibt es offensichtliche Mängel bei meiner vorgeschlagenen Lösung?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage