Как преобразовать XML в объект значения Java?

StackOverflow https://stackoverflow.com/questions/779755

  •  13-09-2019
  •  | 
  •  

Вопрос

Какие библиотеки с открытым исходным кодом доступны для преобразования 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.

Это было полезно?

Решение

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

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

Другие советы

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

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

Вот пример:

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

ДжиБХ это еще один вариант.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top