Je dois décider sur lequel utiliser. Mon cas est assez simple. J'ai besoin de convertir un simple pojo / haricot en XML, puis de retour. Rien de spécial. p>
Une chose que je recherche est qu'il devrait également inclure également les propriétés des parents. Le mieux serait si cela peut fonctionner sur Super Type, ce qui peut être juste une interface de marqueur. P>
Si quelqu'un peut comparer ces deux avec des inconvénients et des pros, et quelle chose manque dans laquelle une. Je sais que XStream prend également en charge JSON aussi, c'est un plus. Mais SIMPLE avait l'air plus simple d'un coup d'œil, si nous définissons Json de côté. Quel est l'avenir de Simple en termes de développement et de communauté? Xstream est assez populaire, je crois, même le mot, "xstream", a frappé de nombreux fils à ce sujet. P>
Merci. P>
9 Réponses :
Je vous recommanderais de jeter un coup d'œil à simple p>
Édité ma question après votre réponse. Merci d'avoir introduit cette autre chose. Un de mes amis à JavarancMade me rend compte que les entre eux sont aussi âgés que deux ans, il n'a plus que le commissateur unique. Donc, c'est hors de question pour moi. Maintenant, vous voudrez peut-être mettre en évidence certaines zones de cadre simple, comme comment cela sera plus approprié pour moi. Merci beaucoup.
Jusqu'à présent, je n'ai jamais utilisé un cadre simple. p>
Basé sur mon expérience avec Xstream. Cela a bien fonctionné sur XML. Toutefois, pour JSON, le résultat n'est pas aussi précis que prévu lorsque je tente de sérialiser un haricot contenant une liste de hashtable. P>
En ce moment, je n'ai pas besoin de faire Json Thingie. Au fait, j'ai essayé de simples et Xtream les deux. Les deux m'a donné le résultat souhaité. Mais je colle avec Xtream, à cause de sa popularité, je suppose. :) Merci quand même.
Juste de la lecture de la documentation (je suis confronté au même problème que vous êtes, mais je n'ai pas encore essayé de quelque manière que ce soit; prenez cela avec un grain de sel): P>
xstream fort> p>
simple fort> p>
gère la version de la version en étant non stricte dans l'analyse chaque fois que la classe a raison, mais la version est différente. (c.-à-d. Si vous avez ajouté deux champs et supprimé un depuis la dernière version, cela ignorera le champ supprimé et ne jetez pas une exception, mais ne définit pas les champs ajoutés.) Comme Xtream, il ne semble pas avoir de façon de migrer les données d'une version à la suivante, mais contrairement à Xstream, aucune bibliothèque externe ne doit pas entrer et la gérer. Vraisemblablement, la manière de gérer cela est avec une fonction externe (et peut-être une variable "Version" de votre classe?), Donc vous faites p>
Stuff myrestoredstuff = sériializer.Lead (Studio.class, fichier);
myresdedstuff.sanityCheck (); p> li>
Les ajustements sérialisés (DE) couramment utilisés sont fabriqués en ajoutant / édition d'annotations, mais il est possible de rédiger vos propres fonctions de sérialisation pour remplacer les méthodes standard si vous devez faire quelque chose de laineux. P > li>
J'ai été distrait par quelque chose d'autre et j'ai laissé tomber le projet.
Que voulez-vous dire que Xtream ne gère pas les changements? Si je modifie les membres de la classe, disons-moi, je supprimai une propriété ou ajoute une propriété, Sûrement Xtream devrait être capable d'ignorer ceux-ci sinon dans le XML? Je viens d'essayer. On dirait que cela ne le gère pas parfaitement.
Je l'ai travaillé. Il y a une option ignoreunknonfelements (); pour la propriété de classe supprimée. Cependant, il n'est toujours pas capable de gérer des propriétés nouvellement ajoutées et ne la nule toujours malgré cela potentiellement définitive et définie dans la classe. Je peux vivre avec elle puisque aucun autre outil ne le fait non plus.
examinait rapidement de simples en lisant Stackoverflow; En tant que modification de Paul Marshalls Post utile, j'ai pensé mentionner que Simple semble soutenir la version via des annotations - P>
http://simple.sourceforge.net/download /stream/doc/tatudial/taturial.php#version p>
Pourquoi ne pas utiliser Jaxb à la place? P>
Consultez mon article de blog comparant Jaxb & Xstream: bdghan.blogspot.com/2010/10/...
Découvrez également mon article de blog comparant Jaxb & Simple: bdghan.blogspot.com/2010/10/...
JAXB est le meilleur mais les développeurs Android doivent garder à l'esprit que vous ne pouvez pas l'utiliser à cause de dépendances des colis manquants. Tout le monde devrait utiliser Jaxb.
simple est beaucoup plus lent puis xstream (dans des objets de sérialisation à XML) p>
http://pronicles.blogspot.com/2011/03/ xstream-vs-simple.html p>
Simple est environ 4 fois plus rapide que Xtream, le test dans le lien ci-dessus est comme quelque chose d'un enfant de 5 ans écrirait. Je ne pense pas que la personne qui a écrit cela comprend comment utiliser le cadre ou comment écrire un indice de référence fiable.
Si vous voulez faire quelque chose de bien - faites-le par vous-même =) Écrivez votre propre
Donc, vous savez que c'est l'auteur de Simple lui-même qui a commenté. Je soupçonne qu'il sache à quelle vitesse sa propre bibliothèque est comparée à Xstream.
pensé que je partage cela ici. Pour obtenir Xstream d'ignorer les champs manquants (lorsque vous avez supprimé une propriété):
XStream xstream = new XStream() { @Override protected MapperWrapper wrapMapper(MapperWrapper next) { return new MapperWrapper(next) { @Override public boolean shouldSerializeMember(Class definedIn, String fieldName) { if (definedIn == Object.class) { return false; } return super.shouldSerializeMember(definedIn, fieldName); } }; } };
Je ne sais pas si c'est nouveau, mais xtream.ignoreunknownelements () est une option au moins aujourd'hui.
Un désavantage «simple» (jeu de mots »de Simple et JAXB est qu'ils ont besoin d'annoter vos objets avant de pouvoir être sérialisé à XML. Que se passe-t-il le jour où vous voulez rapidement sérialiser le code de quelqu'un d'autre avec des objets qui ne sont pas annotés? Si vous pouvez voir cela se produisant un jour, Xstream est un meilleur ajustement. (Parfois, il se résume vraiment à des exigences simples comme celle-ci pour conduire vos décisions). P>