Quelle est la différence entre Castor XML de liaison et JAXB de liaison
Quelle est la différence entre Castor XML et JAXB contraignant puisque les deux sont obligatoires objet java pour XML et vice versa.
Mise à jour :
Que l'utilisation de Ricin je peux le faire Supposer packageA.ClassA
et packageB.ClassA
ont les mêmes attributs et le nom de classe juste qu'ils étaient situés dans l'autre paquet.
packageA.ClassA - > XML -> packageB.ClassA
En utilisant JAXB si je fais cela, Marshall objet packageA.ClassA
à XML et XML unmarshall en objet packageB.ClassA
j'ai eu erreur de Casting.
OriginalL'auteur user236501 | 2010-01-11
Vous devez vous connecter pour publier un commentaire.
Veuillez noter que JAXB est une API, et il y a plusieurs implémentations disponibles.
Soleil fournit une implémentation de référence et le paquet avec J2EE (il est disponible en J2SE 1.6 également).
Le ricin est né avant JAXB est sorti de Soleil, et offre quelques fonctionnalités supplémentaires. Mais si tout ce que vous voulez, c'est la plaine de liaison XML, puis la référence de Soleil de la mise en œuvre devrait fonctionner à merveille.
Il y a une grande l'article dans JavaWorld sur cette. Un peu vieux mais la plupart des idées a expliqué qu'il y tient toujours bon. Et de ne pas trouver l'article en mentionnant les annotations JAXB, qui ont rendu les choses plus facile de nos jours.
Simple est un facile d'utiliser un cadre contraignant, et fonctionne avec un minimum de "simples" de configuration.
DOM est un entrirely différents concept - son tout sur l'analyse et ne fait rien sur la liaison. À l'aide d'un DOM parser, vous pouvez extraire des données à partir de XML. Mais il ne vous donne pas un objet de mappage. Vous avez donc encore pour extraire les données à l'aide de DOM, et ensuite écrire le code pour pousser ces données à un objet java.
Si vous aimez cette réponse, veuillez tenir compte de l'accepter ou de lui donner au moins un upvote. Merci!!!!
OriginalL'auteur Vasu
Vous obtenez la classe cast exception, car un
JAXBContext
instance associe chaque racine du nom de l'élément XML avec une liaison de classe.Donc quand vous le maréchal
packageA.ClassA
en XML, et puis unmarshal de nouveau, le résultat sera unpackageA.ClassA
, et vous ne pouvez pas jeter.Si vous voulez unmarshal à un
packageB.ClassA
, alors vous avez besoin pour construire une deuxièmeJAXBContext
. La premièreJAXBContext
connaîtpackageA.ClassA
, la deuxième connaîtpackageB.ClassA
. Utiliser le premier pour la sérialisation XML, le deuxième pour les unmarshalling . Qui va fonctionner comme prévu.OriginalL'auteur skaffman