# Zugriff auf durch JAXB erzeugte Object-Struktur...



## f4llout (3. Jun 2009)

Hallo beisammen, 
mein Problem ist folgendes: Nachdem ich nun über JAXB die Objektstruktur meines Schemas erzeugt habe, könnte ich nun mit den getter-Methoden auch bequem auf die einzelnen Elemente des Schemas zugreifen, und mit diesen arbeiten. Mein Problem hierbei ist nun, dass es sich um eine nicht gerade geringe Anzahl an Elementen handelt, und diese  teils optional gefüllt sind oder nicht. Ich müsste aber unabhängig davon, welche gefüllt sind mit den einzelnen Elementen dann weiterarbeiten können. Hat jemand eine Idee wie man hier die gefüllten Elemente rausbekommt, um sie in einer Datenstruktur zwischenspeichern zu können (z.B. Hashmap) ohne für jedes einzelne über die getter-Methoden checken zu müssen, ob es enthalten ist, bzw. einen Wert hat?!


----------



## Noctarius (3. Jun 2009)

Ich weiß nicht, ob ich dein Problem verstanden habe.

Du musst doch sowieso Top-Down die "Typen" instanzieren und mit Daten füllen? XML ist doch auch hierarchisch.


----------



## f4llout (3. Jun 2009)

Danke für die rasche Antwort!
Also nun konkreter... :

Ich bekomme quasi bereits ein gefülltes Schema, und möchte auf die einzelnen "Key-Value-Pairs" des Schemas zugreifen. Dies ist grundsätzlich so geregelt, dass man dies bequem über die getter-Methoden machen kann. Ich möchte aber gerne ALLE Key-Value-Pairs die im Schema enthalten sind über ne Schleife oder ähnliches in ner Datenstruktur speichern. Ich weiss aber zu diesem Zeitpunkt nicht, was gesetzt wurde im Schema und was nicht. Ein Weg wär, nun jedes mögliche Element des Schemas mit dem jeweiligen Getter zu checken, und dann in meine Datenstruktur dann zu schreiben. 
Meine Frage ist nun, ob dies auch irgendwie anders möglich ist, da ich ja in einer Schleife nicht die unterschiedlichen getter abrufen kann...


----------



## Noctarius (3. Jun 2009)

Normal gibt ein Schema doch schon vor das bestimmte Werte gesetzt sein müssen, damit verminderst du die "Rate"-Quote schon. Ansonsten wird dir nichts anderes übrig bleiben, weil dir XML nicht vorgibt wie Elemente heißen. Wie willst du sowas auseinanderhalten?


```
<xml>
    <bundeslaender>
        <bundesland>
            <stadt />
        </bundesland>
        <bundesland>
            <kreis>
                <stadt />
            <kreis>
        </bundesland>
    </bundeslaender>
</xml>
```

Da ist die Hierarchie doch nicht unwichtig, oder seh ich das falsch?


----------



## freaksta (3. Jun 2009)

Das von ihm angesprochene Problem ist folgendermaßen:

Wenn man beispielsweise ein folgendes Instanzdokument hat:


```
<DICOM>
  <Patient>
    <Name>...</>
    <Bday>...</>
    ...
</DICOM
```

Es ist klar zu sehen, dass hier ein Problem vorliegt. Geht man davon aus, dass noch n Elemente nach den beiden anderen kommen, die befüllt sein können oder auch nicht, muss ich immer eine Prüfung mit dem jeweiligen getter machen. Das Problem ist nun, dass n verschiedene getter existieren. Eine if-Kamikaze Aktion ist meiner Meinung nicht zu tolerieren...es muss doch eine Möglichkeit geben, da irgendwie davon zu abstrahieren...

...ich meine wenn man komplexe XML Schemen hat dann muss dass doch auch komfortabel gehen.


----------



## Noctarius (3. Jun 2009)

Ich hab das Problem irgendwie immer noch nicht verstanden *mal nen Schritt weiter vom Schlauch entfernt*

Was soll denn geprüft werden und was soll vorhanden sein?


----------



## Wildcard (3. Jun 2009)

Nimm statt JAXB doch EMF. Dort gibt es dann zB die Möglichkeit über den gesamten Inhalt eines Teilbaums zu iterieren, oder mit einem TreeVisitor über alle Knoten zu laufen.


----------

