Java XML Binding
Ce que vous êtes en utilisant pour la liaison XML pour Java? JAXB, de Ricin, et XMLBeans sont quelques-uns des choix disponibles. Les comparaisons que j'ai vu sont tous les trois ou quatre ans. Je suis ouvert à d'autres suggestions. Marshalling /unmarshalling la performance et la facilité d'utilisation sont d'un intérêt particulier.
Précisions: j'aimerais voir non seulement ce cadre que vous utilisez, mais votre raisonnement pour l'utilisation de l'un sur les autres.
Vous devez vous connecter pour publier un commentaire.
JiBX. Précédemment, j'ai utilisé Castor XML, mais JiBX s'est révélée être beaucoup mieux, notamment en termes de performance (droite port de certains code de l'application de Castor XML pour JiBX fait 9 fois plus rapide). J'ai aussi trouvé le format de mappage pour JiBX à être plus élégant que le Ricin.
JiBX atteint ses performances à l'aide de post-compilation du bytecode à la manipulation, plutôt que le reflet de l'approche adoptée par Castor. Ceci a l'avantage qu'il accorde moins d'exigences sur la façon dont vous écrivez votre mappé classes. Il n'est pas nécessaire pour les getters, setters et de non-arg constructeurs juste pour satisfaire les outils. La plupart du temps, vous pouvez écrire la classe sans tenir compte de la cartographie des enjeux et puis la carte sans modifications.
Si vous voulez prendre une décision éclairée, vous devez être clair sur pourquoi vous êtes traduire entre les objets XML et java. La raison étant que les différentes technologies dans cet espace d'essayer de résoudre les différents problèmes. Les différents outils se répartissent en deux catégories:
Pour la sérialisation xml, Xstream est dur à battre. JAXB est la norme pour la liaison XML.
Dans les deux cas, si vous êtes en utilisant J2EE, vous aurez besoin de prêter attention à des classes d'extrait de JPA depuis la classe de procurations et de la persistance spécifiques des types de collection peut confondre de liaison /de sérialisation des outils.
Si vous avez un XSD XML, et vous n'avez pas besoin de lier les données à un ensemble de classes, puis j'aime vraiment XMLBeans. Fondamentalement, il fonctionne comme ceci:
De la liaison d'un document XML pour les classes générées est aussi simple que:
Nous utilisons xstream. Marshalling /unmarshalling est trivial. Voir leur tutoriel pour des exemples.
Jibx est ce qui est utilisé ici. Il est très rapide, mais les liaisons peut être un peu délicat. Cependant, il est particulièrement utile si vous avez des schémas XML décrivant votre domaine d'objets, que c'est vraiment les cartes de XSD (il y a même une version bêta de l'outil XSD2Jibx qui peut prendre XSDs et de créer stub classes du domaine et des mappages, que vous pouvez ensuite prendre et les câbles coaxiaux pour s'adapter à votre modèle de domaine).
Il manipule bytecode, il doit être exécuté après la première compilation de la Java .les fichiers de classe. Vous pouvez utiliser le plugin Maven pour elle, ou simplement l'utiliser directement (le plugin Eclipse n'a pas l'air de fonctionner pour moi).
J'ai utilisé Jaxb avec plus ou moins de succès. À l'époque (un couple d'années en arrière) l'ensemble de la documentation a été terne et l'utilisation de base de la documentation (y compris en cas de téléchargement de mises en œuvre) a été difficile de trouver ou de les modifier.
L'analyseur qui a écrit les classes Java était très bon, avec peu d'écart par rapport à l'original XSD (même si je pense qu'il a eu des problèmes de soutenir résumé des éléments XML).
Je ne l'ai pas utilisé depuis, mais j'ai un projet à venir qui nécessitent un tel cadre et je serai intéressé de savoir comment quelqu'un d'autre à des foires avec les ci-dessus.
J'ai utilisé de ricin 7 ans, il a assez bien fonctionné. utilisé Dtd. Pas beaucoup de choix à l'époque.
Dans les projets en cours, j'ai utilisé
1) JAXB -- les normes de base, de Référence de mise en œuvre de la disposition, de la ligne de commande et ant des outils disponibles. dernière version 2.1.8 besoins de java 5+.
2) XStream -- pour le Savon unmarshalling -- besoins de Java 5+. N'est pas aussi rapide et conforme aux normes en tant que JAXB plus tard.
BR,
~Un
Connexes: La sérialisation XML en Java?
XmlBeans est un bon choix surtout si vous avez des "brisées" XSD/fichiers WSDL.
N'mentionné
..mais il peut également prendre un Nœud, ou un Fichier, ou juste au sujet de n'importe quelle source.
Pas de bagarre avec les espaces de noms,
traverse à l'objet que vous souhaitez unmarshall,
et de l'Usine.l'analyser.
Souhaite que je l'avais trouvé il y a 2 semaines.
Nous utilisons de Ricin. Il correspond à nos besoins plutôt bien.
Je me posais exactement la même question, et j'ai enfin trouvé ce tests de performance réalisés par IBM. http://www.ibm.com/developerworks/library/x-databdopt2/. JiBX est mon choix, je suppose, hehe.