Domanda

Che tipo di librerie open-source sono disponibili per convertire XML in un oggetto di valore Java?

In Net, c'è un modo per farlo facilmente questo con serializzazione XML e gli attributi. Immagino c'è qualche parallelo in java. So come fare questo con un DOM o SAX parser, ma mi chiedevo se ci fosse un modo più semplice.

Ho un formato XML predefinito che sembra qualcosa di simile.

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

In Net, posso fare qualcosa di simile per associare il mio oggetto per i dati.

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()
    {
    }
  }
}

Mi chiedevo se ci fosse un metodo che utilizza annotazioni, simili a .Net o forse Hibernate, che mi permetterà di legare il mio oggetto valore predefinito al-XML.

È stato utile?

Soluzione

Mi piace Xstream molto, soprattutto rispetto a JAXB - a differenza di JAXB, XStream non è necessario avere un XSD. E 'grande se si dispone di una manciata di classi che si desidera serializzare e deserializzare in XML, senza la mano pesante-ness di dover creare un XSD, jaxc correre per generare classi da quello schema, ecc XStream d'altra parte è abbastanza leggero.

(Naturalmente, ci sono un sacco di volte in cui JAXB è appropriato, come ad esempio quando si dispone di un pre-esistente XSD che si inserisce l'occasione ...)

Altri suggerimenti

JAXB permette di convertire uno schema XML (XSD) file in una collezione di classi Java. Questo può essere più "strutturato" rispetto all'approccio XMLEncoder / Serializable che Andy (eccellente, tra l'altro) risposta fornisce.

Java ha un XMLEncoder che si potrebbe essere in grado di utilizzare per serializzare un oggetto in XML. L'unico requisito è che il vostro oggetto implementa "Serializable".

Ecco un esempio:

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

JiBX è un'altra opzione.

Per ulteriori opinioni sui dati Java-to-XML vincolante, vedi serializzazione XML in Java?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top