XML auf Java Klassen Mappen

sparefroh

Mitglied
Hey liebe Community,


leider benötige ich wieder einmal eure Hilfe.

Derzeit stehe ich vor dem Problem, dass ich eine XML Datei auslesen muss damit ich diese dann auf meine Java Klassen Mappen kann.

Habe auch schon gegooglt, aber leider weiß ich immer noch nicht was die beste Lösung bzw. eine gute Lösung für mein Problem ist.

Ich hoffe Ihr könnt mir weiterhelfen.

Konkret handelt es sich um diese XML Datei:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML Struktur/Example -->
<JavaFXApplication>
<GlobalSettings>
<!-- hier kommt die DB Connection oder in weiterer Folge der File Pfad rein. -->
<ConnectionString>jdbc:eek:racle:thin:mad:delphi.htl-leonding.ac.at:1521:delphidb [hd090006 on HD090006]</ConnectionString>
</GlobalSettings>

<Pages>
<Page>
<Name>Page1</Name>
<!-- Textgröße für die Überschrift -->
<TextSize>15</TextSize>

<Button>
<Name>Button1</Name>
<LinkedPage>Page2</LinkedPage>
<!-- hier kommt der Spaltenname oder statischer Wert?" -->
<Parameter>ID</Parameter>
</Button>

<Table>
<!-- hier kann die Textgröße für die Table definiert werden -->
<TextSize>15</TextSize>
<!-- hier kommt die SQL Query rein -->
<Statement>select * from emp where id = ?</Statement>
<!-- Spalten die nicht angezeigt werden sollen (z.b id) -->
<NonDisplay>ID</NonDisplay>
<NonDisplay>NAME</NonDisplay>
<!-- für gewisse Spalten kann eine bevorzugte Breite ergänzt werden -->
<PreferedDimension>
<!-- welche Spalte soll eine best. Größe haben -->
<ColumnName>STRASSE</ColumnName>
<MinWidth>10</MinWidth>
<MaxWidth>15</MaxWidth>
</PreferedDimension>
</Table>
</Page>
<Page>
<Name>Page2</Name>
<!-- Textgröße für die Überschrift -->
<TextSize>15</TextSize>
<Button>
<Name>Button1</Name>
<LinkedPage>Page1</LinkedPage>
<!-- hier kommt der Spaltenname oder statischer Wert?" -->
<!-- <Parameter ID /> -->
</Button>

<TextField>
<!-- Größe des Textes -->
<TextSize>15</TextSize>
<!-- Ausrichtung des Textes -->
<Orientation>Center</Orientation>
<!-- Der Text der später angezeigt wird -->
<Text>
Das ist der Text der später angezeigt wird.
Eventuell sollten Tags für Farben oder ähnliches ergänzt werden.
</Text>
</TextField>
</Page>
</Pages>
</JavaFXApplication>
[/XML]

Daraus möchte ich dann diese Klasse erstellen:

Code:
public class FxPage {
    private String pageName;
    
    private List<ButtonInformation> buttonInformation = new LinkedList();
    private Boolean isTable;
    private String tableOrTextfieldName;
    private int textSize;
    private String textOrientation;
    private List<String> nonDisplayColumn = new LinkedList();
    
    private List<PreferedDimension> preferedTableDimension = new LinkedList();
    private String statement;
}

Hier die weiteren Klassen die verwendet werden:

Code:
public class ButtonInformation {
    private String buttonName;
    private String linkedPage;
    private String parameter;
}

public class PreferedDimension {
    private double minWidth;
    private double maxWidth;
}


Ich hoffe Ihr könnt mir helfen, auch wenn es sich hier wahrscheinlich um ein eher triviales Problem handeln wird.

Liebe Grüße

Johannes
 
Zuletzt bearbeitet:

turtle

Top Contributor
Ich glaube du kannst aus der Fülle der XML-Frameworks dich aus zwei verschiedenen Ansätzen wählen.

Erstens könntest du JAXB nehmen. Hierzu müsstest du eine Java-Datei erstellen und diese mit Annotations füllen, die beim Marshalling, also dem Erstellen einer XML-Datei aus den Java-Dateien, bzw. Unmarhaling, also dem Erstellen von Java-Objekten aus XML-Datei helfen. Ich vermute da wirst du bei der angegebenen XML-Datei Änderungen an den Java-Klassen machen müssen.

Die zweite Möglichekeit wäre das Parsen der XML-Datei mit XPATH. Hier kannst du gezielt angegeben aus welcher XML-Struktur welche Informationen in Java übernommen werden sollen.
 

sparefroh

Mitglied
Vielen Dank für die super Antwort!!


Noch eine kurze Frage, wie müsste ich denn die Klassen verändern?

Bzw. was würdest du für einen Ansatz nehmen?

Lg

Johannes
 

turtle

Top Contributor
Ich würde in Java quasi die XML-Struktur mit Klassen nachbauen und jede Klasse geeignet annotieren.

Also beispielsweise
Java:
@XmlRootElement(name = "JavaFXApplication")
@XmlAccessorType(XmlAccessType.FIELD)
public class JavaFXApplication {
	@XmlElement(name = "GlobalSettings")
	private GlobalSettings globalSettings;
//...
 

sparefroh

Mitglied
Ok vielen Dank, dann werde ich versuchen es so zu machen ;)


Danke!


Noch eine kurze Frage, muss ich dann in der Klasse GlobalSettings auch was annotieren?


Java:
public class GlobalSettings {
    String connectionString;
    String user;
    String password;
}
 
Zuletzt bearbeitet:

KSG9|sebastian

Top Contributor
Ich finde den umgekehrten Weg angenehmer.

Erstell für die XML-Datei ein XSD-Schema..und aus dem XSD-Schema lässt du dir deine JAXB-Klassen generieren. Dann hast du auch gleich eine vernünftige Validierung für dein XML und das Schema ist relativ schnell erstellt.
 

sparefroh

Mitglied
Klar stimmt, danke turtle!

Nja Jaxb finde ich sehr gut, da ich in weiterer Folge auch aus den Objekten ganz einfach eine XML Datei erzeugen kann!

Lg
 
Zuletzt bearbeitet:

sparefroh

Mitglied
So habe es jetzt alles annotiert usw. aber muss leider mitteilen da es nicht funktioniert :/

Folgende Fehlermeldung/Exception wird geworfen.

Code:
e = (com.sun.xml.bind.v2.runtime.IllegalAnnotationsException) com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 10 counts of IllegalAnnotationExceptions
javafx.util.Callback ist eine Schnittstelle, und JAXB kann keine Schnittstellen verarbeiten.
    this problem is related to the following location:
        at javafx.util.Callback
        at public final javafx.util.Callback javafx.scene.control.TableView.getColumnResizePolicy()
        at javafx.scene.control.TableView
        at javafx.scene.control.TableView javafxapplication.FxPage.table
        at javafxapplication.FxPage
        at private java.util.List javafxapplication.main.XMLFxApplication.pages
        at javafxapplication.main.XMLFxApplication

Habe daraufhin ein wenig gegooglt und festgestellt das JAXB nicht kompatible mit JavaFX ist ...

Habt ihr vielleicht noch andere Vorschläge?

LG
 

sparefroh

Mitglied
Das hat mir mein Lehrer gesagt da es da zu Problemen mit den Interfaces kommt.

Daher habe ich es jetzt einfach mit JDOM gelöst.

Funktioniert wunderbar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
B aus xsd Java Klassen generieren XML & JSON 3
R XSD aus Java Klassen erzeugen?? XML & JSON 2
S Java - Klassen erzeugen aus xsd bzw. wsdl XML & JSON 3
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
T Tags in XML Datei mit Java erstellen XML & JSON 3
E JAXB und java.nio.file.Path XML & JSON 4
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
S Java REST Client + Json XML & JSON 8
L Lässt sich folgendes so oder so ähnlich mit Java und XML umsetzen XML & JSON 3
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
L login - Java IOException jaas.config File or Directory not present XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
J JSON zu Java mit der GSON Google API XML & JSON 0
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
E JAVA simple.JSONObject cannot be cast to simple.JSONArray XML & JSON 9
P Einheiten in Java XML & JSON 4
T Visualisierung von XML Dateien in einer Java SwingGui XML & JSON 11
A WSDL und Java XML & JSON 5
A XMLRPC für Java XML & JSON 3
N Java XML schreiben funktioniert nicht XML & JSON 1
MiMa Mehrfachvariablen in Java durch XML XML & JSON 4
Q XML-File als Objekt in Java XML & JSON 6
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
S Wie aktualisiert man den Java-Kode mit FOP1.0? XML & JSON 1
L XSL: Aufruf Java-class XML & JSON 11
N Java Code aus XML Datei generieren XML & JSON 8
GUI-Programmer java.io.File aus .jar beziehen XML & JSON 6
A Unterschiedliche Datenstruktur XML <-> Java mappen XML & JSON 9
N xsd pattern in java einlesen XML & JSON 6
M java.lang.RuntimeException: Failed to parse document XML & JSON 4
F SOAP in Java XML & JSON 6
Q Atom/RSS-Feed lesen - per XSD zu Java-Code XML & JSON 4
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
F Einlesen von JDBC connection in Java von XML XML & JSON 4
D xsd->java mit Eclipse?! oder wie? XML & JSON 27
M Probleme mit XPath bei Java XML & JSON 5
_dp Java XML Parse error: findet end-tags nicht XML & JSON 10
V JAXB schema 2 java XML & JSON 3
S XJC --> Java-Objects compile Problem XML & JSON 4
G Mit JSON Java und C# verbinden XML & JSON 4
K XML Datei in ein Java package „einbinden" XML & JSON 3
H Java - XML - Rekursion - Verwirrung XML & JSON 6
F XML Datei in Java einlesen XML & JSON 4
J XSD > XML > Java XML & JSON 7
F XML mit Java XML & JSON 2
algorismi SVG Datein mit Batik in Java reinladen XML & JSON 3
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
Mike90 -xlsx Dateien in Java lesen XML & JSON 3
T StAX / SAX => Wie XML Datenstruktur in Java abbilden? XML & JSON 2
H XML plattformunabhängig/Open Source für Java XML & JSON 4
C Java-Imports bei Jaxb XML & JSON 8
slawaweis Problem mit XSLT (wahrscheinlich ein Bug in Java 6) XML & JSON 16
Fadi .classpath(XML) mit Java lesen XML & JSON 2
M Frage zu Erklärung im Online book "Java ist auch eine I XML & JSON 4
M Problem mit FOP in Java Programm XML & JSON 2
H Fop / Java /Fonts XML & JSON 6
H XSL Aufruf via Java mit neuen Fonts XML & JSON 9
T Java Klasse für gegebenes XML erstellen XML & JSON 4
M Xlink in Java-Objekt umwandeln XML & JSON 9
S Jdom+java webstart XML & JSON 4
P Einstieg in XML mit Java XML & JSON 3
G MS-Word Dokument mit Java erstellen XML & JSON 2
N AXIOM mit Java 1.4 XML & JSON 4
J DTD in Java integrieren? XML & JSON 3
L XML Datei in Java angeben Pfad? XML & JSON 3
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
G XML mit JAVA an URL senden (http post) XML & JSON 12
D Java DOM Ausgabe ohne XML header XML & JSON 4
S XML Strings in JAVA einlesen, aber wie? XML & JSON 8
S Java 6 und Xerces-j-2-9 XML & JSON 3
E XML mit java einlesn XML & JSON 2
L mit Java eine HTML-Datei erstellen XML & JSON 3
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
G JAVA und DOM XML & JSON 2
M Java und XSLT: Performanz-Problem XML & JSON 5
P DTD -> Java XML & JSON 4
K xml --> sax --> java objekthierarchie XML & JSON 2
B DTD aus Java erzeugen XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
K java + xpath -> performanceproblem XML & JSON 9
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
A Kann XML weitere XMLs inkludieren? Oder kann es Java? XML & JSON 5
vogella *Erledigt* XML und Java DOM Tutorial XML & JSON 3
T SOAP mit Java ohne HTTP Server möglich? XML & JSON 3
C HTML-Befehle per Java entfernen XML & JSON 7
W Java und XML - help request XML & JSON 3
M [SOLVED]Ausgabe mit Java XML & JSON 2
P Unterschiede java 1.4 und 1.3 XML & JSON 3
M generate SVG with java XML & JSON 2
G java+xml mit dom4j XML & JSON 4
P XSLT in Java verwenden XML & JSON 7
M Auswertung arithmetischer Ausdrücke mit SAX und Java XML & JSON 7
S XMl Dateien in Java schreiben XML & JSON 4
B XML-Document mit Java erzeugen und zuruecksenden XML & JSON 1
J Beispiel aus Java Magazin 03/2004 gesucht ! XML & JSON 6
R java.net.MalformedURLException: no protocol . XML & JSON 12

Ähnliche Java Themen

Neue Themen


Oben