Как мне преобразовать XML в объект значения Java? - PullRequest
2 голосов
/ 23 апреля 2009

Какие библиотеки с открытым исходным кодом доступны для преобразования XML в объект значения Java?

В .Net есть способ легко сделать это с помощью сериализации и атрибутов XML. Я хотел бы представить некоторые параллели в Java. Я знаю, как это сделать с помощью парсера DOM или SAX, но мне было интересно, есть ли более простой способ.

У меня есть предопределенный формат XML, который выглядит примерно так:

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

В .Net я могу сделать что-то подобное, чтобы привязать мой объект к данным.

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

Мне было интересно, существует ли метод, использующий аннотации, похожий на .Net или, возможно, Hibernate, который позволил бы мне связать мой объект значения с предопределенным XML.

Ответы [ 4 ]

13 голосов
/ 23 апреля 2009

Мне нравится XStream много, особенно по сравнению с JAXB - в отличие от JAXB, XStream не требует, чтобы у вас был XSD. Здорово, если у вас есть несколько классов, которые вы хотите сериализовать и десериализовать в XML, без необходимости создавать XSD, запускать jaxc для генерации классов из этой схемы и т. Д. легкий.

(Конечно, JAXB подходит много раз, например, если у вас есть уже существующий XSD, подходящий для этого случая ...)

2 голосов
/ 23 апреля 2009

JAXB позволяет преобразовать файл XML-схемы (XSD) в коллекцию классов Java. Это может быть более "структурированным", чем подход XMLEncoder / Serializable, который дает ответ Энди (кстати, отлично).

1 голос
/ 29 мая 2009

JiBX - еще один вариант.

Дополнительные сведения о связывании данных Java-XML см. В Сериализация XML в Java?

1 голос
/ 23 апреля 2009

В Java есть XMLEncoder , который вы можете использовать для сериализации объекта в XML. Единственное требование - ваш объект реализует «Сериализуемый».

Вот пример:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...