Подтвердить что ты не робот

Сохранение графиков объектов Java в виде XML файла

Какая простая в использовании технология Techonlogy позволяет сохранить произвольный графический объект Java в виде XML файла (а также возможность регидратации объектов позже)?

4b9b3361

Ответ 1

Самый простой способ - сериализовать граф объектов. Java 1.4 построила поддержку для сериализации как XML.

Решением, которое я успешно использовал, является XStream (http://x-stream.github.io/)- это небольшая библиотека, которая легко позволит вам сериализовать и десериализовать и из XML.

Недостатком является то, что вы можете только очень ограничить определение полученного XML; которые могут быть не обязательно в вашем случае.

Ответ 3

XStream у людей в Thoughtworks имеет простой API и даже имеет дело с такими вещами, как дубликаты и круговые ссылки. Он, кажется, активно развивается и хорошо документирован.

http://x-stream.github.io/

Ответ 4

Используйте java.beans.XMLEncoder. Его API очень простой (на самом деле это слишком просто: неплохо было бы подключить его к SAX ContentHandler), но он работает на многих графиках из коробки, и легко создать собственный делегат персистентности для любых нечетных, которые вы можете встретить.

  • Синтаксис, используемый XMLDecoder, позволяет вы должны вызвать любой метод, экземпляр или статические, включая конструкторы, поэтому он чрезвычайно гибкий.
  • Другие имена кодеров элементы и атрибуты после класса и имена полей, поэтому нет никакой фиксированной схемы для результата. XMLEncoder XML следует простому DTD и может легко проверяться или трансформироваться, даже если вы никогда не видели которые он использует.
  • Вы можете назначить объекты идентификатор и ссылки на них по всему графику.
  • Вы можете ссылаться на константы, определенные в классах или интерфейсах.

И он встроен в Java SE, поэтому вам не нужно отправлять дополнительную библиотеку.

Ответ 5

Если вам нужен контроль над генерируемым XML, я рекомендую взглянуть на Betwixt (http://commons.apache.org/betwixt/) - он добавляет много функциональности для Apache digester (Digester хорош для построения графиков объектов из XML, но не так хорош для их генерации).

Если вам действительно не нужен XML, который генерируется (просто его можно будет десериализовать в будущем), то классы XMLEncoder/Decoder, встроенные в Java или хорошо - до тех пор, пока объекты, которые вы сериализуете, следуют Спецификация JavaBean. Самая большая область, с которой я столкнулся с решением XMLEncoder/Decoder, - это если у вас есть bean, который возвращает неизменяемый список для одного из его свойств - кодер не очень хорошо справляется с этой ситуацией.

Ответ 6

Хотя XStream и JAXB могут сериализовать некоторые графы объектов, они не могут обрабатывать очень сложные графики. Наиболее мощным решением для больших комплексных графиков является http://simple.sourceforge.net/, он может обрабатывать любой граф. Кроме того, его быстрый и простой в использовании без каких-либо зависимостей.

Ответ 7

XStream очень прост http://x-stream.github.io/

XStream - простая библиотека для сериализации объектов в XML и обратно.

Ответ 9

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

Ответ 10

JAX-B является частью стандартных API и очень прост в использовании.

Ответ 11

Я второй (или третий) XStream. Он читает и пишет XML без необходимости какой-либо специальной конфигурации привязки или размещения большого количества постороннего синтаксиса в XML.

Ответ 12

I собрал список с большим количеством библиотек сериализации xml и его лицензии

Ответ 14

Если вам действительно интересно только сериализовать ваши объекты в файл, а затем десериализовать их позже, вы можете проверить YAML вместо XML. YAML намного проще работать с XML, а выходные файлы очень удобны для чтения (что может быть или не быть требованием). Для получения дополнительной информации просмотрите yaml.org. Я использовал JYAML успешно в недавнем проекте.