Pergunta

Que tipo de bibliotecas de código aberto estão disponíveis para XML converter em um objeto de valor java?

Na Net, há uma maneira de fazer isso facilmente com a serialização XML e atributos. Eu imagino que há alguns paralelos em java. Eu sei como fazer isso com um DOM ou parser SAX, mas eu queria saber se havia uma maneira mais fácil.

Eu tenho um formato XML predefinida que é algo como isto.

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

Na Net, eu posso fazer algo parecido com isto para ligar meu objeto para os dados.

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

Eu queria saber se havia um método usando anotações, semelhante à Net ou talvez Hibernate, que me permita ligar o meu objeto de valor para o XML predefinidos.

Foi útil?

Solução

Gosto XStream muito, especialmente em comparação com JAXB - ao contrário de JAXB, XStream não precisa de você para ter um XSD. É ótimo se você tem um punhado de classes que você deseja serializar e desserializar para XML, sem a mão pesada-ness da necessidade de criar um XSD, jaxc prazo para gerar classes de esse esquema, etc. XStream por outro lado, é bastante leve.

(Claro, há uma abundância de momentos em que JAXB é apropriado, como quando você tem um XSD pré-existente que se encaixa a ocasião ...)

Outras dicas

JAXB lhe permite converter um arquivo XML Schema (XSD) em uma coleção de classes Java. Isto pode ser mais "estruturado" do que a abordagem XMLEncoder / Serializable que Andy (excelente, por sinal) de resposta fornece.

Java tem um XMLEncoder que você pode ser capaz de usar para serializar um objeto para XML. O único requisito é que seus implementos objeto "Serializable".

Aqui está um exemplo:

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

JiBX é outra opção.

Para mais opiniões sobre dados Java para XML Binding, consulte em Java?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top