JAXB для начинающих: учебник по обработке XML с Java
Видео по теме: (May 2024).
Чтобы приложения могли взаимодействовать друг с другом, часто необходимо преобразовать данные в формат, который является высоко совместимым. Для этого в Java существует библиотека JAXB, которая обрабатывает объекты в файлы XML.
Создайте файл XML с помощью JAXB - Best Practices
JAXB расшифровывается как Java Architecture для XML Binding . Это позволяет преобразовывать объекты Java в файлы XML и наоборот. Прежде чем начать, необходимо помнить несколько моментов:
- JAXB является неотъемлемой частью пакета JRE с версии 1.6 . Кроме того, среда разработки Java должна быть актуальной, поскольку в ней исправлены ошибки.
- Избегайте примитивных типов данных, таких как float, десятичное или отрицательное целое число, а также анонимных типов данных . В JAXB нет эквивалента для этого. В противном случае объекты, числовые типы данных, списки и наборы могут быть преобразованы. JAXB также не может обрабатывать сложные типы данных, такие как java.time.LocalDate . Для этого требуется специально созданный адаптер .
- В техническом жаргоне направление от Java к XML называется маршалингом, а демаршалинг - противоположным направлением.
XML-аннотаций
Последние видео
JAXB для начинающих: учебник на примере коллекции CD
AudioCD.java: атрибуты аудио CD определены здесь
MusicDB.java: музыкальная коллекция состоит из списка аудио компакт-дисков
Наш учебник о коллекции компакт-дисков, которая выводится в формате XML. Он состоит из нескольких аудио компакт-дисков. Исполнитель, год выпуска, название альбома и песни записываются для каждого аудио CD.
- Сначала должен быть создан класс, который содержит данные аудио CD. Это включает исполнителя, год выпуска, альбом и песни, которые находятся на компакт-диске.
- Чтобы лучше контролировать вывод в формате XML, требуются аннотации XML, начинающиеся с @ в Java.
- Корневой элемент в файле XML можно указать с помощью следующей аннотации: @XmlRootElement (name = "Audiocd")
- Вы можете вставить аннотацию над методами получения или установки, которая задает альтернативное имя для атрибута Java. Например, вместо атрибута year следует указать год публикации: @XmlElement (name = "year of edition")
- Порядок атрибутов определяется аннотацией @XmlType (propOrder = {"artist", "title", "year", "songlist"}) . Это означает, что имя исполнителя появляется первым в XML-файле, за которым следует название альбома, год выпуска и список песен. В противном случае порядок зависит от файла Java.
- Затем создайте новый класс Java под названием MusicDB, который содержит список аудио компакт-дисков. Название музыкальной коллекции и местонахождение музыкальной коллекции также записаны здесь. В принципе, процедура аналогична описанной выше в Java-файле.
От объектов Java до файлов XML
Последние видео
AudioCDMain.java: здесь создано несколько аудио-CD
AudioCDMain.java: создание музыкальной коллекции
AudioCDMain.java: преобразует код в XML
Само преобразование происходит в тестовой программе, точнее в основном методе.
- Сначала создайте несколько экземпляров Audio CD, чтобы было создано несколько Audio CD.
- Также необходим экземпляр музыкальной коллекции типа MusicDB.
- Кроме того, JAXB должен знать, какой класс Java содержит корневой элемент. В нашем случае это класс MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- Преобразование происходит с использованием экземпляра Marshaller, который связан с упомянутым выше методом JAXB: Marshaller m = context.createMarshaller ();
- Метод Маршаллера предоставляет дополнительные параметры, такие как вывод XML-документа в формате: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Все дело в обратном направлении
Последние видео
AudioCDMain.java: JAXB генерирует объекты Java из файла XML
Файл XML уже отформатирован JAXB
По сути, преобразование в другом направлении происходит аналогичным образом:
- Сначала создается экземпляр метода unmarshaller : unmarshaller at = context.createUnmarshaller ();
- Затем экземпляру unmarshaler требуется имя ранее созданного XML-файла: MusicDB mdb2 = (MusicDB) um.unmarshal (new FileReader (MUSICDB_XML));