jaxb binding nach set

Status
Nicht offen für weitere Antworten.

mariopetr

Bekanntes Mitglied
hallo,

weis jemand wie man ein (java)Set als binding fuer jaxb einstellt?

problem ist folgendes (jaxbNS ist importiert (jxb)):

[..]
<xs:complexType name="foo">
<xs:sequence>
<xs:element name="bar" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
[..]

wenn man das nun mit annotation::appinfo::jax:property collectionClass compiliert, kann man wirklich nur collections nehmen (da der member mit einer ListBindingFactory erzeugt wird).
wie bekomme ich es (auch xs konform)hin, das es ein set wird?

ps: codeformatierung und tabbs waeren nicht schlecht, geht aber eher nicht (nein, mit html hacke ich das jetzt nicht ein *g*)
 

mariopetr

Bekanntes Mitglied
hallo,

naja, das ist die java xml binding architecture. mann kann damit aus einem xsd (xml schema) ein paar javaklassen generieren, die einem das speichern nach und laden von xml erlauben. quasi jaxp ohne das man etwas selber machen muss.leider kann man jaxb nicht mehr einzelnen downlowden, sondern mus sich das jwsdp (java web services developers pack) vom sunserver ziehen. wenn es dich interessiert, schaue mal nach http://java.sun.com/xml/jaxb/users-guide/, da ist es sehr ausfuehrlich erklaert.
 
S

stev.glasow

Gast
kannst du mir mal ein beispiel nennen wo man das brauch(kann das nicht so nachvollziehen) - vielleicht das woran du gerade arbeitest oder beschäftigst du dich erstmal nur zu lernzwecken damit.
 

mariopetr

Bekanntes Mitglied
hallo,

nehmen wir mal an, du willst einen kleinen server schreiben, der alle mitglieder anbietet. da du kompatibel bleiben willst,willst du die daten als xml ausgeben (kann man dann mit xslt nach html und sonstwas umbauen, also ganz nett).

normalerweise wuerdes du per hand das file generieren, der (java)client mueste dann per hand durchgehen und es auseinanderfickeln.

also schreibst du ein xsd (hast du auch glecih die sicherheit des validierens, die rundrumdeclaration lasse ich mal weg , xsd ist der namespace duer xsd vom w3c)

[..]

<xsd:comlexType name="User">
<xsd:sequence>
<xsd:element name="id" type="xsd:int/>
<xsd:element name="Name" type="xsd:string/>
<xsd:element name="email" "type=xsd:string"/>
<xsd:element name="comments" "type=xsd:int"/>
<xsd:element name="confirmDate" "type=xsd:Date"/>
</xsd:sequence>
</xsd:comlexType>

<xsd:complexType name="UserList">
<xsd:sequence>
<xsd:element name="user" type="user" minOccurs="0" maxOcuurs="unbounded"/>
<xsd:element name="lastUser" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>

<xsd:element name="Content" type="userList"/>

um das xml zu erstellen, reicht jetzt das xsd zu compiliernen und im code dann so oder aehnlich die liste zu erzeugen

[..]
JAXBContext context=JAXBContext.newInstance("packagename");
UserList list=ObjectFactory.newUserList();
User user=ObjectFactory.newUser();
user.setName("name");
user.setID(1);
.
.
.
list.getUser().add(user);
list.setLastUser(user.getID());

Marshaller m=context.createMarshaller();
m.marshal(list,[OutputStream | File | Documebt | ...]);

fuer fehler in source oder xsd hafte ich nicht, hier gibt es kein autocomplet *g*
um dann das xml zu unmarshallen geht es noch einfacher

JAXBContext context=JAXBContext.newInstance("packagename");
UnMarshaller m=context.createUnMarshaller();
UserList list(UserList)m.unmarshal([File | Document | InputStream | ...]);

im vergleich zu sax per hand ein echter fortschritt (stell dir das mal mit ein paar hundert objekten vor).
zudem kannst du (wenn du willst) immer (automatisch) gegen das xsd validieren, so das du mitbekommst wenn du falsche daten lesen oder schreiben willst.

tja, wozu ich das brauche:
- zum einen fuer die arbeit (ich habe das als standard fuer kommunikation ueber xml festgelegt)
- fuer zuhause (ich schreibe ein kleines spielchen und mache gerdae den datalayer)
- es kann nicht schaden, sich damit auszukennen (und wie man an meiner frage sah, kenn ich es auch noch nicht so gut (leider gehen keine sets aus komplexen typen mit xsd))

ps: da du admin bist, kann man die tesxtinputbox nicht breiter machen oder mit nem scroller versehen, der autotextumbruch nervt beim schreiben
 
W

Wiesel

Gast
Tag,

Ich arbeite zur Zeit an einem sehr ähnlichen Problem, deshlab habe ich mir bereits ein XSD-Schema erzeugt und lese/ändere damit auch schon fleißig vorhandene XML Dateien.

Nun wollte ich aber neue XML-Dateien nach diesem Schema erzeugen lassen, das klappt nach dieser Methode auch soweit

Code:
 try {
            JAXBContext jc = JAXBContext.newInstance("schema");
            ObjectFactory objFactory = new ObjectFactory();
            Marshaller m = jc.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

            m.marshal(createNewFile(objFactory), new FileOutputStream("test.xml"));

        } catch (JAXBException e) {
            e.printStackTrace();
        }
        catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }

PS: In der Methode "createNewFile()" setzte ich die ganzen Werte und Typen der zu erzeugenden XML-Datei.


klappt auch alles wunderbar, nur leider fehlt dann in der test.xml das root Tag. Hat einer eine Ahnung wieso??
 

Bleiglanz

Gesperrter Benutzer
nimmst du zufällig JAXB aus dem JWSDP 1.3 her?

jaxbNS?? sagt mir jetzt nichts

und BTW: wie soll aus deinem Element ein Set werden, wenn beliebig viele Strings daherkommen? das geht nicht, weil ja ohne weiteres ein String zweimal auftauchen kann

leider unterstützt JAXB keine keys/uniques, so dass du wohl mit deiner Collection leben musst (ist doch eh besser als das konkretere Set?)
 
W

Wiesel

Gast
Ja ich benutzte jwsdp.

das Problem hab ich auch lösen können man sollte natürlich vom Root-Element selber und nicht vom Typ des Rootelements eine Instanz erzeugen.

Code:
MischwerkType mischWerk = objFactory.createMischwerk();

statt

Code:
MischwerkType mischWerk = objFactory.createMischwerkType();

aber trotzdem danke[/quote]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
W JAXB Binding customization XML & JSON 4
8u3631984 jaxb XML Mapper - Root Element mit Attribut XML & JSON 20
Rakshan Unmarshalling multiple namespaces with jaxb XML & JSON 0
B JAXB und HTML XML & JSON 1
E JAXB und java.nio.file.Path XML & JSON 4
W jaxb-api XML Feld nicht gesendet setzt das Defaultvalue nicht XML & JSON 3
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
S JAXB mit mehreren zusammenhängenden .xsd-Files XML & JSON 0
N JAXB: Überflüssiges Wrapper-Tag für Map-Einträge XML & JSON 0
D JAXB mit Map und Color XML & JSON 2
K JAXB-XML unvollständig XML & JSON 1
K JAXB Unmarshelling XML & JSON 1
E JAXB und abstrakte Klasse(n) XML & JSON 0
B JAXB - Unmarshal -> Kinder bekommen und die Kinder von den Kinder XML & JSON 7
B JAXB - Marshal ArrayList XML & JSON 2
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
B JAXB-Fehler bei REST-Api XML & JSON 0
M JAXB HashMap Dynamisches Laden XML & JSON 0
M JAXB @XMLID und @XMLIDREF, wie Daten hinzufügen XML & JSON 2
P JAXB-Problem XML & JSON 1
A JAXB: XMLMixed generieren XML & JSON 0
R [JAXB] XmlRootElement und XmlType gemeinsam nutzen XML & JSON 0
I XML to Object - Mapping mit JAXB 1.0 XML & JSON 1
L JAXB - Generischen Wert mit Liste belegen XML & JSON 1
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
K JAXB Annotation @XMLRootElement vererben XML & JSON 0
F JAXB Unmarshal - Kein "default Constructor" XML & JSON 2
F.S.WhiTeY JAXB: Schema nicht "erben" XML & JSON 2
B JAXB - manuell Klassen aus xsd XML & JSON 3
S Jaxb Unmarshalling Problem XML & JSON 4
S JAXB - Any Elementliste - wie Werte verändern? XML & JSON 4
R JAXB: A cycle is detected in the object graph. This will cause infinitely deep XML XML & JSON 6
M JAXB versucht abstrakte Klasse zu erzeugen XML & JSON 7
M JAXB: automatisches Groß schreiben Property XML & JSON 9
C Projekt - JAXB, EMF oder doch DOM? XML & JSON 4
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
J JAXB: Mehrmals abspeichern XML & JSON 3
D XML Einlesen mit JaxB XML & JSON 4
L JAXB und Interfaces XML & JSON 4
S Problem with JAXB unmarshalling classes that have the same name in @XmlRootElement XML & JSON 2
eykarhorn JAXB namespace attribut aus rootelement entfernen XML & JSON 2
nrg JAXB - nor any of its super class is known to this context XML & JSON 3
S aus XML mit JAXB zu Baumstruktur XML & JSON 3
nrg JAXB generell auf XMLs übertragbar XML & JSON 22
Landei JAXB: Wert von übergeordneten Element XML & JSON 4
B PropertyChangeListener generieren mit JAXB (xjc) XML & JSON 3
G JAXB und verschachtelte Elemente? XML & JSON 6
G JAXB XML-Attribute feststellen XML & JSON 4
S JAXB 2 und JSR 303 XML & JSON 11
M [JAXB] @XmlAnyElement namespace XML & JSON 4
R JAXB Unmarshal XML & JSON 2
J JAXB und ArrayList XML & JSON 4
Landei Jpa2 -> jaxb??? XML & JSON 9
M JAXB - HashMap XML & JSON 1
dzim JAXB-Unmarshalling ignoriert/löscht Einträge aus XML - oder lässt sie verschwinden XML & JSON 3
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
ruutaiokwu jaxb eclipse plugin... XML & JSON 3
K JAXB: Klassen mit Annotation Lesen/Schreiben XML XML & JSON 3
R JAXB ausgewählte Felder XML & JSON 10
TiME-SPLiNTER JAXB: com.sun.xml.bind.v2.ContextFactory XML & JSON 3
V JAXB und leere Listen XML & JSON 2
L compareto(), equals() in JAXB generierten Dateien XML & JSON 3
D jaxb validierung/verification vor marshalling XML & JSON 3
J JAXB mit GregorianCalendar XML & JSON 4
HombreDelMundo JAXB can't handle interfaces XML & JSON 4
N Individuelles Wrapper-Element um Collection mit JAXB XML & JSON 6
B JAXB Unmarshalling mehrerer Objekte XML & JSON 2
V JAXB schema 2 java XML & JSON 3
B JPA + JAXB Mapping Problem XML & JSON 2
S Navigieren in unbekannten JAXB-Objecten XML & JSON 2
J JAXB NullPointerException im ContextFinder XML & JSON 6
H JAXB und STAX XML & JSON 2
H JAXB Probleme beim Unmarshalling XML & JSON 3
C Serialisierung mit JAXB XML & JSON 6
K JAXB und Maps -> Marshalling-Problem XML & JSON 6
S JAXB und viele verschachtelte Attribute XML & JSON 1
J JAXB - Map XML & JSON 2
O JAXB generierte Klassen sollen Serializable implementieren XML & JSON 1
aze JaxB: Nullelemente in Array nicht anzeigen XML & JSON 3
turmaline JAXB can't handle interfaces XML & JSON 20
sambalmueslie JAXB - Unmarshall ein XML-Document das aus zwei XSD Definitionen besteht XML & JSON 8
S JAXB und abstrakte Klasse(n) XML & JSON 4
P JAXB: Marshalling XML & JSON 7
aze JaxB Elemente in LinkedHashSet werden nicht wiededergegeben XML & JSON 3
M JAXB: Wie folgendes Konstrukt abbilden? XML & JSON 20
A Jaxb und Interfaces XML & JSON 12
B JaxB und XSD :-) XML & JSON 8
G JAXB - Marshaller - kein Rückgabewert XML & JSON 2
N XML will nicht weder JAXB noch XStream XML & JSON 8
F Zugriff auf durch JAXB erzeugte Object-Struktur... XML & JSON 6
C Java-Imports bei Jaxb XML & JSON 8
F Marshaling eines JAXB Objektes worin ein anderes JAXB Objekt eingeschlossen ist XML & JSON 6
K JAXB, Vererbung und Codegeneration XML & JSON 2
M XmlRootElement und JAXB XML & JSON 4
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
G jaxb Vector (oder ähnliches) von Elementen generieren XML & JSON 6
M Jaxb Annotationen, Wert als XML Element XML & JSON 2
J JCheckbox abfragen und serialisieren mit JAXB 2.0 XML & JSON 15

Ähnliche Java Themen

Neue Themen


Oben