Frage

Welche Art von Open-Source-Bibliotheken stehen zur Konvertierung von XML in ein Java-Wertobjekt zur Verfügung?

In .Net gibt es eine Möglichkeit, dies einfach mit XML-Serialisierung und -Attributen zu tun.Ich würde mir vorstellen, dass es in Java eine Parallele gibt.Ich weiß, wie man das mit einem DOM- oder SAX-Parser macht, aber ich habe mich gefragt, ob es einen einfacheren Weg gibt.

Ich habe ein vordefiniertes XML-Format, das ungefähr so ​​aussieht.

<FOOBAR_DATA>
  <ID>12345</ID>
  <MESSAGE>Hello World!</MESSAGE>
  <DATE>22/04/2009</DATE>
  <NAME>Fred</NAME>
</FOOBAR_DATA>

In .Net kann ich so etwas tun, um mein Objekt an die Daten zu binden.

using System;
using System.Xml.Serialization;

    namespace FooBarData.Serialization
    {
      [XmlRoot("FOOBAR_DATA")]
      public class FooBarData
  {
    private int _ID = 0;
    [XmlElement("ID")]
    public int ID
    {
      get { return this._ID; }
      set { this._ID = value; }
    }

    private string _Message = "";
    [XmlElement("MESSAGE")]
    public string Message
    {
      get { return this._Message; }
      set { this._Message = value; }
    }

    private string _Name = "";
    [XmlElement("NAME")]
    public string Name
    {
      get { return this._Name; }
      set { this._Name = value; }
    }

    private Date _Date;
    [XmlElement("DATE")]
    public Date Date
    {
      get { return this._Date; }
      set { this._Date= value; }
    }

    public FooBarData()
    {
    }
  }
}

Ich habe mich gefragt, ob es eine Methode gibt, die Annotationen verwendet, ähnlich wie .Net oder vielleicht Hibernate, die es mir ermöglicht, mein Wertobjekt an das vordefinierte XML zu binden.

War es hilfreich?

Lösung

Ich mag XStream eine Menge, insbesondere im Vergleich zu JAXB – im Gegensatz zu JAXB benötigt XStream keine XSD.Es ist großartig, wenn Sie eine Handvoll Klassen haben, die Sie in XML serialisieren und deserialisieren möchten, ohne dass Sie eine XSD erstellen, jaxc ausführen müssen, um Klassen aus diesem Schema zu generieren usw.XStream hingegen ist ziemlich leichtgewichtig.

(Natürlich gibt es viele Gelegenheiten, in denen JAXB angemessen ist, beispielsweise wenn Sie bereits über eine XSD verfügen, die zum Anlass passt ...)

Andere Tipps

JAXB ermöglicht Ihnen die Konvertierung einer XML-Schema-Datei (XSD) in eine Sammlung von Java-Klassen.Dies kann „strukturierter“ sein als das XMLEncoder/Serializable Ansatz, den Andys (übrigens ausgezeichnete) Antwort bietet.

Java hat eine XMLEncoder die Sie möglicherweise zum Serialisieren eines Objekts in XML verwenden können.Die einzige Voraussetzung ist, dass Ihr Objekt „Serialisierbar“ implementiert.

Hier ist ein Beispiel:

http://www.developer.com/java/web/article.php/1377961

JiBX ist eine weitere Option.

Weitere Meinungen zur Java-zu-XML-Datenbindung finden Sie unter XML-Serialisierung in Java?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top