XML Werte einlesen aber wie am besten weiterverarbeiten?

martin1989

Aktives Mitglied
Schönen Nachmittag!

Ich habe eine xml Datei mittels JDOM in java eingelesen, hat wunderbar funktioniert.
Nun habe ich folgende Datenstrukutur:

Code:
<node1> 
   <blabla>
   <blabla2>
   <blabla3>
   ...
</node1>
<node2> 
   <blabla>
   <blabla2>
   <blabla3>
   ...
</node2>
usw...

meine Frage wäre, wie gestallte ich das Datenhandling am besten in Java? Ich will die Werte/Attribute der "blabla" später für jede "node" in einer GUI mit SWING anzeigen lassen.

Meine Idee wär gewesen eine Klasse mit "blabla" als Attributen zu machen und dann für jede "node" eine neue Instanz anlegen. Dann hätte ich quasi für jede node ein objekt/instanz.

Ist das so der übliche weg oder geht man hier anders vor? zB mit Array Lists oder so?
In den "blabla" Tag steht meist eine Zahl aber auch Sätze.


Vielen Dank und beste Grüße,
Martin

P.S.: hab hier schon im Forum geschaut und am nähesten am meiner Frage wäre dieser Thread gewesen: http://www.java-forum.org/xml-und-c...-einlesen-verarbeiten.html?highlight=jdom+xml
 
Zuletzt bearbeitet:
oder wäre es empfehlenswert dies gleich mit arrays (zb.: multidimensional) zu machen, da dies dann besser geeignet wäre wenn ich das ganze zB in einer JTable anzeigen lassen will?
 
Irgendwie kapier ich deine denke nicht. Natürlich brauchstcdu sowohl eine eigene Klasse mit Attributen die den Blabla entsprechen als auch mindestens ein Array von Objekten dieser Klasse für jede Node eine. Ohne Klasse geht es höchstens wenn du ganz merkwürdige Konstrukte mit irgendwelchen collections macht. Ohne Array geht es gar nicht.
 
hy thalluis!

das ich ein array für alle objekte einer jeden node brauche war mir klar 🙂 ich meinte, ob ich die Inhalt der "Blabla" in attribute speichern sollte oder in listen.

Ich habs jetzt mal auf beide wege gelöst. einmal hab ich für jede "node" ein objekt erstellt das die "blabla" werte den definierten attributen des objektes zuweist.

Dann hab ichs noch versuch in dem ich wieder für jede node ein objekt erstelle und aber nicht mehr attribute sondern nur mehr eine Map. Hab dann den blabla namen als key in die map geladen und den inhalt als value. Hat auch funktioniert. Diese vorgehensweise ist ein wenig flexibler da ich nicht die attribute schon vor definieren muss sondern direkt in die map schreiben kann, je nach dem wie sie heissen und wieviele es sind.

Ich werde jetzt dann schauen welche vorgehensweise besser geeignet ist um den inhalt von blabla in tabellen auf einer swing gui darstellen zu können 🙂

Danke für deine antwort !
 
Warum nicht einfach annotierte POJOs erstellen and dann dein XML mit JAXB einlesen / ausgeben? Das wandelt dein XML sofort in die entsprechenden Klassen um und du hast ein sauberes Model.
 
Hallo lhein!

Was sind den annotierte Objekte? 🙂

Der Grund warum ich DOM verwendet habe war, weil es für mich ganz einfach anzuwenden zu schien.
Wäre JAXB auch eine einfach anzuwendende alternative?

Danke, lg
 
Zuletzt bearbeitet:
danke!

so wie ich das sehe brauche ich dann aber das schema des xml files oder?
das sieht bei mir aber bei jedem xml files anders aus, sprich es ist immer unterschiedlich tief geschachtelt und mit DOM habe ich es so gelöst das ich einfach so tief in den baum hineingegangen bin bis zum element das keine kinder mehr hatte und da will ich ja auch immer hin 🙂
 
die Elemente des XML Files sollten bekannt sein, sonst kannst Du ja keine classes mit Annotations erstellen. Das ist aber eigentlich in den meisten Fällen so. Du könntest ja mal deine XML Dateien posten.
 
das xml sieht eigentlich immer so aus:


Code:
<node1> 
   <node2>
       <bla>
       <bla>
  </node2>
  <node3>
    <node4>
      <node5> 
         <bla>
         <bla>
      </node5>
    </node4>
  </node3>
</node1>

also je nach file kann es unterschiedlich tief in den baum hineingehen bis zu der letzten node wo dann die bla attribute sind.
 
Zuletzt bearbeitet:
dies schaut auch ganz vielversprechend aus 🙂

viel anders mach ich es ja auch nicht mit JDOM, da hangle ich mich halt mit .getChildren so tief hinein bis NULL zurückkommt und hole mir dann in dieser ebene mit getAttribute die werte 🙂

ich werd mir das mit dem xpath auf jedenfall noch mal genau ansehen und schauen ob es event. so einfacher wäre 🙂 danke 🙂
 

Zurück
Oben