2010-04-13 14 views
18

Ich verwende JAXB, um eine XML-Datei in einen Objektbaum zu entpacken. Das Stammobjekt ist nicht null, aber alle Mitglieder sind null, obwohl in der XML-Datei Daten vorhanden sind. Meine Objektklassen wurden mit Axis2 aus wsdls generiert. Ich habe die Object Klasse, die jaxb.index Klasse, die package.info Anmerkung usw.JAXB Unmarshall Erstellt ein leeres Objekt

Mein Problem ist das gleiche wie diese Diskussion: http://old.nabble.com/AXIS2,-JAXB---Unmarshalling-td26847419.html

In erster Linie: Gibt es einen Weg, ich es bekommen kann um die Daten richtig zu füllen?

Wenn nicht, gibt es eine gute Ersatz-Bibliothek für Axis2 oder JAXB, die das gleiche tut, aber das wird gut miteinander spielen?

+0

Wir werden einige JAXB-Beispielklassen und XML benötigen, bevor wir das beantworten können. – skaffman

+0

Haben Sie herausgefunden, was dieses Problem verursacht hat? – Kimble

Antwort

46

JAXB ignoriert standardmäßig stillschweigend Fehler. Ich kann keinen Grund sehen, warum dies die Standardkonfiguration ist. Fügen Sie diesen Code hinzu, um eine Ausnahme auszulösen, wenn etwas schief geht.

+3

+10! Nach einer Stunde endlosen Kopfschlagens kam ich zu deinem Trinkgeld. Danke ... – Ittai

+0

Toller Vorschlag. Ich warne jedoch davor, die JAXB-Entwickler als nicht sehr gut zu betrachten - ein Großteil von JAXB wurde von dem Genie hinter Jenkins, Kohsuke Kawaguchi, geschrieben. Die Verwendung eines Pluggable-Event-Handlers ermöglicht eine große Flexibilität (zu Kosten der Einfachheit). – JaysonRaymond

+2

@JaysonRaymond - Du hast Recht, ich sollte diese Worte nicht verwenden. Nachdem ich jedoch gerade herausfand, dass ich zwei Arbeitstage verschwendet hatte, weil JAXB stillschweigend Fehler ignorierte, war es frustrierend, gelinde gesagt. Ich bin der festen Überzeugung, dass dies nicht die Standardkonfiguration sein sollte, aber ich werde den Wortlaut meiner Antwort bearbeiten. –

0

Ich möchte nur hinzufügen, wenn Axis2 zusammen mit Rampart (SOAP Body-Verschlüsselung) und JAXB verwendet wird, tritt dieses Problem immer auf.

Siehe Details: AXIS2-4981

1

Kürzlich ähnliche Art von Problem, das ich hatte, und konnte die Lage, es wie unten zu beheben:

1) FIXUP die XSD-Datei. In meinem Fall habe ich dafür gesorgt, dass alle komplexen Elemente in xsd mit ref-Attribut auf ihren entsprechenden Typ verweisen, anstatt sie mit type-Attribut zu deklarieren.

Ich habe überprüft, ob meine xsd richtig oder nicht, indem Sie eine XML-Datei aus XML-Schema-Datei-Option in Eclipse erstellen.

Vor der Fehlerbehebung war das Stammelement in der XML-Datei leer. Nach dem Fixieren der xsd wurde die XML mit einigen Beispielwerten richtig erstellt.

2) sauber und neu erstellen Es ist obligatorisch, vor dem Generieren der Klassen zu reinigen.

0

Die Datei package-info.java muss kompiliert werden. Eclipse muss alle .java-Dateien finden und kompilieren. Wenn Sie über die Befehlszeile kompilieren und javac nach Abhängigkeiten suchen lassen, wird es NICHT gefunden. Wenn du dann rennst, bekommst du leere Gegenstände. Scheint wie ein Fehler in JAXB, diese Datei nicht irgendwo zu importieren. Und der Fehler sollte Ihnen sagen, möglicherweise kompilieren Sie diese Datei.

Verwandte Themen