Java und XML

Diskutiere Java und XML im Allgemeine Java-Themen Bereich.
I

icrystaltm

Hey Leute,

vorerst entschuldige ich mich falls es nicht der richtige Bereich ist für diesen Post.

Nun, wir haben derzeit an der Hochschule einen Projekt erhalten, in der wir eine XML-Beispieldatei (x83-Datei) als Vorlage haben.
Wir müssen in diesem Projekt eine grafische Benutzeroberfläche in Java erstellen, die diese x83-Datei öffnen und in tabellarischer Form darstellen kann.
Die GUI muss nicht viel können, wenn man über die Menüleiste auf "Neu" klickt, sollte die Tabelle entleert werden und wenn man auf "Öffnen" klickt, wird der Benutzer aufgefordert eine x83-Datei auszuwählen.

Nun, meine Frage wäre, dass ich keinen Ansatz finde, wie ich mit diesem Projekt anfangen soll, da dachte ich mir, ob mir eventuell jemand hier in dem Forum einen Denkanstoß geben könnte, wie man sich am besten an so eine Sache rantasten könnte.

Im Anhang ist eine Vorlage, wie die GUI aussehen soll und die x83-Datei (in XML-Form).

Ich bedanke mich im Voraus.
Schönen Abend wünsche ich euch allen! :)
 

Anhänge

J

JustNobody

Also da es sich um valides XML incl. XSD Datei handelt sollte es ausreichen, entsprechende Datenklassen zu erzeugen um dann eine einfache XML Serialisierung durchzuführen. Das ginge z.B. mit JAXB. Siehe z.B. https://www.torsten-horn.de/techdocs/java-xml-jaxb.htm das dies etwas aufzeigt.

Es kann aber auch einfach das XML gelesen werden. Dann hast Du entweder:
a) einen SAX Parser. Der geht aktiv das Dokument durch und Du bekommst Element für Element. Da könntest Du dann alles durchgehen und sozusagen von Hand die Instanzen erzeigen oder Werte zuweisen.
b) DOM Parser. Da wird das XML einmal komplett eingelesen und du hast am ende ein XML Document. In diesem XML Document kannst Du dann Dinge abfragen, die einzelne Ellemente geben lassen und so ...

Das wäre so im groben, was ich sehen würde. Ich neige gerne mal zur ersten Variante. Aber für eine kleine Übungsaufgabe ist es evtl. zu viel. Da könnte a) oder b) ausreichen.
 
mrBrown

mrBrown

Hast du denn eine Erklärung zu dem Format bekommen?

In der GUI ist ein Speichern-Button zu sehen, soll man die Datei auch verändern können?


Generell würde ich anfange, mir ein geeignetes Datenmodell zu überlegen. Die Daten dann mit den von @JustNobody genannten Varianten parsen, ud in dein eigenes Modell überführen.
Für deine Modell dann noch eine Visualisierung erstellen, wenn das Datenmodell sinnvoll ist, ist das trivial, zum Testen des Parsens reicht ja vorher auch die Konsole.
 
mihe7

mihe7

Zuerst einmal solltest Du Dich mit dem Problem vertraut machen. Im konkreten Fall wäre das z. B. die Frage: was ist X83? Gibt es dazu ein Schema? Mit etwas Googeln landest Du relativ schnell bei der richtigen Stelle. Dort gibt es nicht nur Dokumentation sondern auch das Schema zum Download.

Dann würde ich mir überlegen, wie ich die Serialisierung/Deserialisierung hinbekomme. Dabei würde ich an JAX-B denken.

Wenn ich das habe, kann man mal Code schreiben. Erstmal für die Konsole: Datei öffnen, speichern, schließen, auflisten. Hier kann man bereits ein Dokument modellieren. Das ist etwas mehr als nur die Objekte, die JAX-B liefert.

Für das GUI bietet sich ein MVC-like-Ansatz an. Dazu bräuchte man noch ein paar Ereignisse. Die kann man implementieren. Für die Tabelle ist die zu implementierende Schnittstelle vorgegeben. Da werden sicher noch ein paar Feinheiten kommen, aber im Grundsatz sollte es das gewesen sein.
 
I

icrystaltm

Also da es sich um valides XML incl. XSD Datei handelt sollte es ausreichen, entsprechende Datenklassen zu erzeugen um dann eine einfache XML Serialisierung durchzuführen. Das ginge z.B. mit JAXB. Siehe z.B. https://www.torsten-horn.de/techdocs/java-xml-jaxb.htm das dies etwas aufzeigt.

Es kann aber auch einfach das XML gelesen werden. Dann hast Du entweder:
a) einen SAX Parser. Der geht aktiv das Dokument durch und Du bekommst Element für Element. Da könntest Du dann alles durchgehen und sozusagen von Hand die Instanzen erzeigen oder Werte zuweisen.
b) DOM Parser. Da wird das XML einmal komplett eingelesen und du hast am ende ein XML Document. In diesem XML Document kannst Du dann Dinge abfragen, die einzelne Ellemente geben lassen und so ...

Das wäre so im groben, was ich sehen würde. Ich neige gerne mal zur ersten Variante. Aber für eine kleine Übungsaufgabe ist es evtl. zu viel. Da könnte a) oder b) ausreichen.
Ich glaube die Variante mit dem JAXB, scheint eventuell etwas für die Aufgabe zu sein. Das Projekt ersetzt nämlich unsere Klausur für dieses Semester.

Hast du denn eine Erklärung zu dem Format bekommen?

In der GUI ist ein Speichern-Button zu sehen, soll man die Datei auch verändern können?


Generell würde ich anfange, mir ein geeignetes Datenmodell zu überlegen. Die Daten dann mit den von @JustNobody genannten Varianten parsen, ud in dein eigenes Modell überführen.
Für deine Modell dann noch eine Visualisierung erstellen, wenn das Datenmodell sinnvoll ist, ist das trivial, zum Testen des Parsens reicht ja vorher auch die Konsole.
Ich wüsste nicht, was du mit Format meinst? ://
Das Speichern-Button ist etwas für Gruppen mit 4 Mitgliedern, deswegen spielt es keine Rolle für mich. :D

Das Ding ist auch noch, dass ich nicht weiß, wie ich genau parsen soll. Ich hatte mir einige Videos zur DOM bzw. SAX-Parser angeschaut und bei denen ist die XML-Datei viel zu einfach, die ist nur mit "student" oder "user" oder iwelche "mitarbeiter" gefüllt. Doch bei mir handelt es sich definitiv um mehrere "Objekte". Für mich stellt sich jetzt die Frage, falls ich euch richtig verstanden habe, dass ich in Eclipse jetzt die Klassen mit den zugehörigen Attribute erstelle, die XML-Datei parse, und die Objekte dann speichere, oder? :)

Falls ich falsch liege, bitte ich um eine Korrektur. ^^
 
I

icrystaltm

Zuerst einmal solltest Du Dich mit dem Problem vertraut machen. Im konkreten Fall wäre das z. B. die Frage: was ist X83? Gibt es dazu ein Schema? Mit etwas Googeln landest Du relativ schnell bei der richtigen Stelle. Dort gibt es nicht nur Dokumentation sondern auch das Schema zum Download.

Dann würde ich mir überlegen, wie ich die Serialisierung/Deserialisierung hinbekomme. Dabei würde ich an JAX-B denken.

Wenn ich das habe, kann man mal Code schreiben. Erstmal für die Konsole: Datei öffnen, speichern, schließen, auflisten. Hier kann man bereits ein Dokument modellieren. Das ist etwas mehr als nur die Objekte, die JAX-B liefert.

Für das GUI bietet sich ein MVC-like-Ansatz an. Dazu bräuchte man noch ein paar Ereignisse. Die kann man implementieren. Für die Tabelle ist die zu implementierende Schnittstelle vorgegeben. Da werden sicher noch ein paar Feinheiten kommen, aber im Grundsatz sollte es das gewesen sein.
Ein Schema dazu hätte ich die sieht wie folgt aus:

Sorry, wegen Doppelpost.
 

Anhänge

I

icrystaltm

1. Wir sind hier per Du
2. Ja.

Mit Hilfe von JAX-B kannst Du aus Dieser Datei Java-Klassen erzeugen und auf diese XML-Dateien abbilden bzw. von diesen erzeugen lassen. Stichworte dazu: xjc, marshaling und unmarshaling. Ein ausführliches Beispiel findest Du z. B. unter https://www.torsten-horn.de/techdocs/java-xml-jaxb.htm
Also, danke erstmal für deine Mühe ^^.
Ich habe es jetzt hinbekommen, dieses Datei zu parsen in Java-Objekte. Du meintest oben in deinem Beitrag etwas von "Wenn ich das habe, kann man mal Code schreiben. Erstmal für die Konsole: Datei öffnen, speichern, schließen, auflisten. Hier kann man bereits ein Dokument modellieren. Das ist etwas mehr als nur die Objekte, die JAX-B liefert. ".

Was genau ist gemeint mit "bereits ein Dokument modellieren", wenn ich fragen darf. :)
 
mihe7

mihe7

Naja, ein Dokument besteht ja nicht nur aus den Objekten sondern auch aus weiteren Daten wie z. B. dem Dateinamen bzw. Pfad zur Datei.
 
Thema: 

Java und XML

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben