XStream oder einfach

7

Ich muss entscheiden, welches ich verwenden soll. Mein Fall ist ziemlich einfach. Ich muss ein einfaches POJO / Bean in XML konvertieren und dann zurück. Nichts Besonderes.

Eine Sache, nach der ich suche, ist, dass sie auch die übergeordneten Eigenschaften enthält. Am besten wäre es, wenn es am Super-Typ arbeiten kann, der nur eine Marker-Schnittstelle sein kann.

Wenn jemand diese beiden mit Nachteile und Vorteile vergleichen kann, und welche Sache in welcher fehlt. Ich weiß, dass XStream auch JSON unterstützt, das ist ein Pluspunkt. Aber Einfach sah auf den ersten Blick einfacher aus, wenn wir JSON beiseite legen. Was ist die Zukunft von Simple in Bezug auf Entwicklung und Gemeinschaft? XStream ist ziemlich populär, glaube ich, sogar das Wort "XStream" traf viele Threads auf SO.

Danke.

    
Adeel Ansari 13.10.2009, 03:39
quelle

9 Antworten

7

Warum nicht stattdessen JAXB?

  • 100% Schemaabdeckung
  • Riesige Benutzerbasis
  • Mehrere Implementierungen (falls Sie einen Fehler in einem finden)
  • In Java SE 6 enthalten, kompatibel mit JDK 1.5
  • Bindungsschicht für JAX-WS (Web Services)
  • Bindeschicht für JAX-RS (Rest)
  • Kompatibel mit JSON (bei Verwendung mit Bibliotheken wie Jettison)

Nützliche Ressourcen:

Blaise Doughan 09.07.2010, 19:02
quelle
11

Nur durch das Lesen der Dokumentation (Ich habe das gleiche Problem wie Sie, aber ich habe es noch nie versucht; nehmen Sie das mit einem Körnchen Salz):

XSTREAM

  1. Sehr, sehr einfach zu Google. Beispiele, Forenbeiträge und Blogposts sind einfach zu finden.
  2. Funktioniert out of the box. (Vielleicht brauchen Sie mehr Feinabstimmung, aber es gibt Ihnen sofort etwas .)
  3. Das Konvertieren einer Variablen in ein Attribut erfordert das Erstellen einer separaten Konverterklasse und deren Registrierung bei XStream. (Es ist nicht schwer für einfache Werte, aber es ist ein bisschen mehr Arbeit.)
  4. Die Versionierung wird überhaupt nicht behandelt, es sei denn, Sie fügen XMT (eine andere Bibliothek) hinzu. Wenn sich das von Ihrer Klasse generierte XML ändert, wird es überhaupt nicht deserialisiert. (Sobald Sie XMT hinzugefügt haben, können Sie Ihre Klassen ändern, wie Sie möchten, und XStream kann damit umgehen, solange Sie eine zunehmende Anzahl von inkrementellen Versionierungsfunktionen erstellen.)
  5. Bei allen Anpassungen müssen Sie Code schreiben, um entweder eigene (De-) Serialisierungsfunktionen zu implementieren oder XStream-Funktionen aufzurufen, um die verwendeten (De-) Serialisierungstechniken zu ändern.
  6. Triviale Syntax Anmerkung: Sie müssen die Ausgabe des Deserializers in Ihre Klasse umwandeln.

EINFACH

  1. Die Startseite ist die einzige zuverlässige Informationsquelle; Es enthält etwa ein halbes Dutzend externer Artikel, und es gibt eine Mailing-Liste, aber im wilden Internet kann man das nicht herausfinden.
  2. Erfordert die Annotation Ihres Codes, bevor er funktioniert.
  3. Es ist einfach, eine kompaktere XML-Datei zu erstellen, die für jede Eigenschaft Attribute anstelle von XML-Knoten verwendet.
  4. Handelt die Versionierung, indem sie bei der Syntaxanalyse nicht strikt ist, wenn die Klasse richtig ist, aber die Version ist anders. (Wenn Sie beispielsweise zwei Felder hinzugefügt und eine seit der letzten Version entfernt haben, wird das entfernte Feld ignoriert und keine Ausnahme ausgelöst, die hinzugefügten Felder werden jedoch nicht gesetzt.) Wie XStream scheint es keine Möglichkeit, Daten von einer Version zur nächsten zu migrieren, aber im Gegensatz zu XStream gibt es keine externe Bibliothek, die einsteigt und damit umgehen kann. Vermutlich ist der Weg, um dies zu handhaben, mit einigen externen Funktionen (und vielleicht eine "Version" Variable in Ihrer Klasse?), So dass Sie

    Stuff myRestoredStuff = serializer.read (Stuff.class, Datei); myRestoredStuff.sanityCheck ();

  5. Häufig verwendete (De) Serialisierungseinstellungen werden durch Hinzufügen / Bearbeiten von Anmerkungen vorgenommen, aber es gibt Unterstützung für das Schreiben eigener (De-) Serialisierungsfunktionen, um die Standardmethoden zu überschreiben, wenn Sie etwas Wolliges tun müssen.

    >
  6. Triviale Syntax Anmerkung: Sie müssen die Klasse des wiederhergestellten Objekts in den Deserializer übergeben (aber Sie müssen das Ergebnis nicht umsetzen).
PotatoEngineer 28.04.2010 06:45
quelle
7

Ich würde empfehlen, dass Sie sich einfach

ansehen     
Kevin Day 13.10.2009 03:52
quelle
2

Ich würde auch vorschlagen Einfach , schau dir die Tutorial , dort und entscheide selbst. Die Mailingliste ist sehr reaktionsschnell und Sie erhalten immer eine schnelle Antwort auf alle Fragen.

    
ng. 14.10.2009 09:55
quelle
1

Bisher habe ich noch nie einfach Framework verwendet.

Basierend auf meinen Erfahrungen mit Xstream. Es funktionierte gut auf XML. Bei JSON ist das Ergebnis jedoch nicht so genau wie erwartet, wenn ich versuche, eine Bean seriell zu machen, die eine Hashtable-Liste enthält.

    
ThiamTeck 24.11.2009 10:29
quelle
1

Ein "simples" (Wortspiel beabsichtigt) Nachteil von Simple und Jaxb ist, dass sie Ihre Objekte kommentieren müssen, bevor sie in XML serialisiert werden können. Was passiert an dem Tag, an dem Sie schnell den Code einer anderen Person mit Objekten annotieren wollen, die nicht mit Anmerkungen versehen sind? Wenn Sie das eines Tages sehen, passt XStream besser. (Manchmal läuft es nur auf einfache Anforderungen wie diese, um Ihre Entscheidungen zu steuern).

    
Carl Karawani 27.12.2012 21:44
quelle
0

Betrachtete einen kurzen Blick auf das einfache Lesen von stackoverflow; Als eine Änderung zu Paul Marshalls hilfreichem Beitrag, dachte ich, ich würde erwähnen, dass Simple die Versionierung durch Anmerkungen zu unterstützen scheint -

Ссылка

    
Andrew B 07.07.2010 10:31
quelle
0

Simple ist viel langsamer als XStream (in Serialisierungsobjekten zu xml)

Ссылка

    
user293756 17.03.2011 07:17
quelle
0

Ich dachte, ich teile das hier. Um XStream dazu zu bringen, fehlende Felder zu ignorieren (wenn Sie eine Eigenschaft entfernt haben):

%Vor%

Dies kann auch erweitert werden, um Versionen und Eigenschaften umzubenennen.

An Peter Voss: Ссылка

    
Armin 12.07.2012 06:46
quelle

Tags und Links