Ordonnancement des classes imbriquées avec JAXB
Je suis en train de maréchal de certaines classes que j'ai conçu, avec la norme JAXB, les classes ont tous des nuls constructeurs, c'est ma première tentative à l'aide de JAXB ou marshalling/unmarhslling dans n'importe quelle langue d'ailleurs, mais ce que je comprends JAXB devrait être en mesure de marshall sans un XSD.
Les classes sont comme suit:
@XmlRootElement(name="place")
class Place {
@XmlAttribute
//various fields and get set methods
public Place() {
}
}
@XmlRootElement(name="Arc")
class Arc {
//various fields and get set methods
@XmlAttribute
Place p;
public setPlace(Place p) {
//...
}
public Arc() {
}
}
@XmlRootElement(name="Transition")
class Transition {
Arc[] a;
public Transition() {
}
}
Je peux marshall la Place
classe, mais pas le Arc
classe, le Transition
je n'essaierai même pas, les classes ont la @XMLPropriety
de balises, mais quand il atteint le imbriquée Place
classe JAXB ne semble pas comprendre l'objet XML à la carte aussi.
Si il y a un autre tag je devrais être à l'aide de la classe imbriquée ou il y a une autre erreur, je suis dominant?
Je le ferai dès que je peux y accéder.
OriginalL'auteur George Bora | 2012-10-31
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien de spécial que vous devez faire pour gérer les classes imbriquées avec tout JAXB (JSR-222) mise en œuvre. Ci-dessous est un exemple où un seul
@XmlRootElement
annotation est utilisée:Transition
Arc
Place
Démo
d'entrée.xml/Sortie
Pour Plus D'Informations
Remarque:
@XMLProperty
n'est pas un JAXB annotation.OriginalL'auteur Blaise Doughan
Ce code est de travailler pour moi. Veuillez vérifier.
Désolé si je n'ai pas compris votre problème.
Arc[]
membre, par exemple.Eh bien, je n'ai pas déclarer la classe imbriquée comme statique, en premier lieu, je ne peux pas accéder au code, je vais revenir vers vous dès que possible.
vérifier mes mises à jour de réponse.
+1 - BTW depuis JAXB est la configuration par exception, vous avez seulement besoin d'ajouter des annotations où vous souhaitez que la représentation XML d'être différent de la valeur par défaut (c'est à dire comme tous les champs/propriétés sont traités comme des
@XmlElement
vous avez seulement besoin d'utiliser cette annotation lorsque vous souhaitez spécifier un non-par défaut le nom de l'élément. Aussi@XmlRootElement
est requis uniquement sur l'objet racine. Les points suivants devraient vous aider: blog.bdoughan.com/2012/07/jaxb-no-annotations-required.htmlMerci c'est une très belle réponse, mais j'ai choisi celui-ci parce que je suis vraiment nouveau à JAXB, une fois que j'aurai plus d'expérience, je vais essayer avec ça plus élégant de style.
OriginalL'auteur KSHiTiJ