XML desializing Attribute bringt nicht erwartetes Ergebnis

OnDemand

Top Contributor
Hallo zusammen,

gegeben ist ist folgede XML von der EZB. Diese will ich in in ein Pojo umwandeln, komme aber einfach nicht an die "Cubes" mit den Währungen. Hat jemand ne Idee was ich falsch mache?

XML:
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time="2022-05-06">
<Cube currency="USD" rate="1.0570"/>
<Cube currency="JPY" rate="137.90"/>
<Cube currency="BGN" rate="1.9558"/>
<Cube currency="CZK" rate="24.665"/>
<Cube currency="DKK" rate="7.4400"/>
<Cube currency="GBP" rate="0.85625"/>
<Cube currency="HUF" rate="381.47"/>
<Cube currency="PLN" rate="4.7028"/>
<Cube currency="RON" rate="4.9490"/>
<Cube currency="SEK" rate="10.4686"/>
<Cube currency="CHF" rate="1.0419"/>
<Cube currency="ISK" rate="138.30"/>
<Cube currency="NOK" rate="9.9808"/>
<Cube currency="HRK" rate="7.5336"/>
<Cube currency="TRY" rate="15.8078"/>
<Cube currency="AUD" rate="1.4888"/>
<Cube currency="BRL" rate="5.3183"/>
<Cube currency="CAD" rate="1.3560"/>
<Cube currency="CNY" rate="7.0506"/>
<Cube currency="HKD" rate="8.2969"/>
<Cube currency="IDR" rate="15312.44"/>
<Cube currency="ILS" rate="3.5965"/>
<Cube currency="INR" rate="81.2980"/>
<Cube currency="KRW" rate="1343.90"/>
<Cube currency="MXN" rate="21.3555"/>
<Cube currency="MYR" rate="4.6191"/>
<Cube currency="NZD" rate="1.6440"/>
<Cube currency="PHP" rate="55.467"/>
<Cube currency="SGD" rate="1.4642"/>
<Cube currency="THB" rate="36.303"/>
<Cube currency="ZAR" rate="16.9614"/>
</Cube>
</Cube>
</gesmes:Envelope>

Java:
public class Envelope {

    private String subject;
    private List<EnvelopeCube> Cube;
    private String gesmes;
    private String xmlns;
    private String text;
    
    //Constructor + Getter + Setter
}

Java:
public class EnvelopeCube {

    private String time;
    private List<Cube> Cube;
    
    //Constructor + Getter + Setter
}

Java:
public class Cube {

    private String currency;
    private Double rate;
    
    //Constructor + Getter + Setter
}
 

OnDemand

Top Contributor
😅 mist, hör ich sonst selten 🤣
Ich hab schon versucht ne List unter die List zu machen aber brachte nix. Hast ne Idee wie ich tiefer komme? :D
 
Y

yfons123

Gast
also um ehrlich zu sein versteh ich dein problem gar nicht

ich weis von den posts die du schreibst dass du ahnung hast von dem was du tust und gut programmieren kannst

deswegen versteh ich dein problem erstmal garnicht

du kannst probleme auf 2 Arten lösen
1. du sagst was am ende raus kommen soll und baust basierend auf das die kleinen methoden auf
2. du baust zuerst die kleinen methoden auf und dann erst das was am ende raus kommt

hier wäre definitiv die nummer 2 angesagt dh du schreibst erst eine klasse die die inneren cubes serialisiert dh du hast folgende xml

XML:
<Cube>
    <Cube currency="USD" rate="1.0570"/>
    <Cube currency="JPY" rate="137.90"/>
</Cube>
serialisier das mal
wenn das geht wird es auch für 1000 cubes funktionieren ganz einfach

und du probierst das halt dann mit der xml aus und schon tada hast du ein mini problem und gleich den unit test dh WENN deine methode mit der test xml funktioniert dann funktionierts auch mit allem

dann erweiterst du
Code:
<Cube>
    <Cube>

        <Cube currency="USD" rate="1.0570"/>

        <Cube currency="JPY" rate="137.90"/>

    </Cube>
</Cube>
schreibst ne klasse die einen cube mehr aussen rum hat, wenn die klasse funktioniert hast auch für diese einen unit test

dann erweiterst du deine xml um das zeug
Code:
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
wenn das auch noch geht hast du dabei durch diese stückweise erweiterung und dem test dazu ob die methode funktioniert auch wieder einen unit test schon da

so und schwups schon funktioniert alles + du hast einen vollständigen unit getesteten code der ansich unbrechbar ist und fehlerfrei

im moment probierst du nur blind rum und versuchst rom auf einen tag zu erbauen das ist nicht gut.. machs stück für stück

Hat jemand ne Idee was ich falsch mache?
jeder hier weis dass du was falsch machst ansonsten wärst du nicht hier :p
du kommst hier nur her wenn du was falsch machst, du kommst hier nicht her wenn du was gut machst

daher ist die information eher kartoffel
du zeigst keinerlei informationen was du probiert hast
was dein ziel ist zu haben usw

du hast hier das XY problem
du sagst auch nicht was überhaupt geht

nach der methode "friss und stirb" wird dir keiner helfen da du auch das asktoask problem hast in gewisser weise
da du dir nicht die zeit nimmst die frage so konkret zu stellen dass sich jeder auskennt.. nur wenn du zu faulk bist ( nicht zu negativ auffassen ) eine anständige frage zu formulieren warum sollten sich dann leute zeit nehmen dir eine asführliche antwort zu schreiben

das sollte eine kosntruktive kritik sein und nicht beleidigend nur das ist mir schon paar mal aufgefallen bei dir

ich selber hab halt extreme grammatik und formulierungs probleme daher kommt nach jeder formulierung einer frage von mir immer von irgendwem "wie meinst du denn des" und ich versuche nach bester möglichkeit nochmal so viel input zu geben wies nur irgendwie geht damit der andere merkt dass ich auch was mache

wenn der eindruck fehlt ist der wille zu helfen einfach nicht da
 

OnDemand

Top Contributor
das sollte eine kosntruktive kritik sein und nicht beleidigend nur das ist mir schon paar mal aufgefallen bei dir
Wirklich? Dann um so mehr danke für deine Antwort. Dachte man sieht anhand des dargestellten Codes, warum ich keine Werte in den "Cubes" habe. Werd mich dann später dort nochmal dran versuchen. Hätte gemeint dass die Werte in den Tags Attribute sind sehr seltsam XML (bisher noch nie damit gearbeitet)
 
Y

yfons123

Gast
ich auch net

aber das ist ja egal, die cubes sind standard xml und die oberen tags kannst du eig komplett ignorieren ka für was die sind, brauchst ja nur den cubes inhalt
 

sascha-sphw

Top Contributor
dein code zeigt problem Y du sagst warum dein versuch nicht funktioniert hat, obwohl du X lösen willst
In seinem Post ist doch alles zu Problem Y gegeben. Und in Deinem Post "... tief genug ..." hast Du Ihm ja auch die Antwort schon gegeben.

Mal einfach die XML formatieren, dann wird es sichtbar.
XML:
<gesmes:Envelope>   // class Envelope
    <Cube>   // <-- Diesen Cube hast Du vergessen
        <Cube time="2022-05-06">   // class EnvelopeCube
            <Cube currency="USD" rate="1.0570" />   // class Cube
            ...
        </Cube>
    </Cube>
</gesmes:Envelope>
 
Y

yfons123

Gast
das mit problem y war so gemeint

er möchte das ganze serialisieren mit dem header zeugs oder nur den inhalt von cubes oder dieses oder jenes

er hat nicht gesagt ob das wichtig ist oder nicht

er hat lediglich die lösung präsentiert die für ihn nicht funktioniert hat er hat aber nicht die problem stellung genannt das ist das xy problem.. ma nsagt dass die lsöugn nicht funktioniert hat aber man nennt nicht das ursprüngliche problem

aber wurscht
 

mrBrown

Super-Moderator
Mitarbeiter
du hast hier das XY problem
Das hier hat nicht wirklich was mit nem XY-Problem zu tun, die Frage beschreibt ziemlich genau das zugrunde liegende Problem. Wenn er danach fragen würde, wie man den String <Cube> aus einer Datei entfernen kann, wäre es eher ein XY-Problem, aber das tut er ja nicht…
jeder hier weis dass du was falsch machst ansonsten wärst du nicht hier :p
die Frage war nicht ob, sondern *was* er falsch macht ;)
helfen da du auch das asktoask problem hast in gewisser weise
Er fragt doch überhaupt nicht, ob jemand helfen kann oder jemand da ist der sich mit XML auskennt, sondern ziemlich konkret mit Code nach einem spezifischen Problem.

Was höchstens fehlt ist die Erwähnung von Jaxb (oder was er benutzt) und der konkrete deserialisierungs-Aufruf, aber das ist beides eher irrelevant, da das Problem recht offensichtlich ist - du konntest ja im ersten Beitrag schon helfen.


das sollte eine kosntruktive kritik sein und nicht beleidigend nur das ist mir schon paar mal aufgefallen bei dir ;)
Wenn man schon kritisiert, sollte das wenigstens auch Hand und Fuß haben und nicht nur aus Buzzwords bestehen ;)
 
Y

yfons123

Gast
die Frage war nicht ob, sondern *was* er falsch macht
Das hier hat nicht wirklich was mit nem XY-Problem zu tun
er sagt halt nicht ob er an dem gesmes hängt oder was überhaupt genau das problem ist oder was er für eine ausgabe hat

es war von mir komplett blind rein geraten dass er nicht tief genug drin ist
hätte ja sein können dass das gesmes zeug das problem ist und er da nicht drüber kommt

wurde aber nicht gesagt es wurde nur gesagt "was mach ich falsch" ... ja aber woher soll ich wissen was raus kommen soll?
ja er will an die cubes aber informationen wie
1. wie weit kommst du
2. was hast du raus bekommen? => hier hätte er ja sagen können "ich krieg nur einen cube" dann wäre wenigstens der rate bereich kleiner gewesen

Er fragt doch überhaupt nicht, ob jemand helfen kann oder jemand da ist der sich mit XML auskennt, sondern ziemlich konkret mit Code nach einem spezifischen Problem.
er hat die serialisierungs klassen gegeben ja
ABER
er muss doch irgendwas ausprobiert haben? oder nicht?
wenn der code beim ersten mal nichts ausgibt ist doch nicht der erste gedanke dass man ins java forum flieht... vllt mal output erzeugen

system out println ist das beste debug tool was jeder java entwickler hat.. ein bisschen eigen initiative
Wenn man schon kritisiert, sollte das wenigstens auch Hand und Fuß haben und nicht nur aus Buzzwords bestehen ;)
du weist ganz gut dass deutsch nicht meine stärke ist :D


das hab ich mir halt bei dem ganzen gedacht
 

OnDemand

Top Contributor
In seinem Post ist doch alles zu Problem Y gegeben. Und in Deinem Post "... tief genug ..." hast Du Ihm ja auch die Antwort schon gegeben.

Mal einfach die XML formatieren, dann wird es sichtbar.
XML:
<gesmes:Envelope>   // class Envelope
    <Cube>   // <-- Diesen Cube hast Du vergessen
        <Cube time="2022-05-06">   // class EnvelopeCube
            <Cube currency="USD" rate="1.0570" />   // class Cube
            ...
        </Cube>
    </Cube>
</gesmes:Envelope>
Danke Sascha!

<Cube time =xxxx > ist das „time“ ein Attribute? Dachte immer man muss Attribute annotieren, damit man da ran kommt.

Danke allen für eure Unterstützung. Ich dachte, dass Leute die Ahnung haben und gewillt sind zu helfen, meine Frage durchaus verstanden haben. Wer es nicht versteht, nicht antworten will oder weiss der Geier was, ok kein Ding dann halt nicht antworten. Etwas mehr Infos wären sicherlich nicht schlecht, aber der Erfahrung nach ergibt sich sowas immer mit der Zeit. Dann kommen Fragen wie welches Framework nutzt usw. dann entsteht eine Diskussion und viele spannende Infos kommen zu Tage.
 

OnDemand

Top Contributor
Irgendwie stell ich mich zu dämlich an! Sobald ich die Felder auf private setze sind die Werte null. Selbst wenn ich die Klasse mit
Java:
@XmlAccessorType(XmlAccessType.FIELD)
annotiere und die Felder mit
Code:
 @XmlElement(name="Cube")

Das kann doch nicht so schwer sein, Json ist da ja ein Spaziergang gegen. Aber man muss es wahrscheinlich erstmal kapiert haben. Glaube es ist Zeit mein 1000 Seitenbuch aufzuschlagen :D
 

OnDemand

Top Contributor
Finally. Habs mit Jackson-Annotationen hinbekommen. Es fehlte ein Cube wie Sascha sagte und die magischen Zeilen im "Cube":

Java:
@JacksonXmlProperty(localName = "Cube")
    @JacksonXmlElementWrapper(useWrapping = false)
    CurrencyCube[] currencyCubeList;
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
Junger_Basileus Attribute, Arrays, Schleifen Allgemeine Java-Themen 9
L xml node mit attribute auslesen Allgemeine Java-Themen 2
L Klassen Polymorphie:2 Attribute gleichen Namens in einem Objekt Allgemeine Java-Themen 6
D JSF Bean Attribute bei Seitenaufruf Allgemeine Java-Themen 6
C Attribute aus HTML Tags auslesen Allgemeine Java-Themen 6
B Mp3-Attribute auslesen & beschreiben Allgemeine Java-Themen 6
M PDF Drucker-Attribute hinterlegen Allgemeine Java-Themen 3
E Finale Attribute und Konstruktor Allgemeine Java-Themen 3
T [htmlparser.sourceforge.net] Attribute extrahieren Allgemeine Java-Themen 3
T Namenskonventionen für Objekt-Attribute Allgemeine Java-Themen 12
J Attribute eines Objekts in ByteArray Allgemeine Java-Themen 3
I Attribute in Textfile auslesen Allgemeine Java-Themen 13
G [JDK 6u2] - JAR Failed to load Main-Class manifest attribute Allgemeine Java-Themen 6
E Attribute in Interfaces möglich? Allgemeine Java-Themen 17
MQue Button Attribute setzen Allgemeine Java-Themen 14
F JSP XML ATTRIBUTE Allgemeine Java-Themen 2
H Nullpointer exception, Attribute in Label schreiben? Allgemeine Java-Themen 4
L Alle Attribute eines Source-Files auslesen Allgemeine Java-Themen 2
J Attribute beim Drucken ändern/ausstellen Allgemeine Java-Themen 8
A Dynamisch Attribute hinzufügen Allgemeine Java-Themen 3
B Zugriff auf Attribute/Methoden der init-Klasse Allgemeine Java-Themen 10
K Anwendung bringt JAVA Speicherfehler Allgemeine Java-Themen 11
K Erhöhung Java Heap Space in Netbeans 6.5 - funktioniert nicht oder bringt nichts? Allgemeine Java-Themen 1
G Bringt es etwas System.gc() nach großen Aufgaben aufzurufen? Allgemeine Java-Themen 2
R Thread-Problem, und synchronized bringt nix Allgemeine Java-Themen 4
G Split String Array bringt Fehlermeldung Allgemeine Java-Themen 7
A JasperReport Detail bringt null bei Datenübergabe Allgemeine Java-Themen 4
S eclipse start bringt fehler Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben