JAXB за начинаещи: Урок за XML обработка с Java
Свързани Видеоклипове: (Може 2024).
За да могат приложенията да комуникират помежду си, често е необходимо да преобразувате данните във формат, който е много съвместим. За целта библиотеката JAXB съществува под Java, която обработва обекти в XML файлове.
Генерирайте XML файл с JAXB - Най-добри практики
JAXB означава Java Architecture за свързване с XML . Позволява Java обектите да бъдат преобразувани в XML файлове и обратно. Преди да започнете, трябва да имате предвид няколко точки:
- JAXB е неразделна част от пакета JRE от версия 1.6 . В допълнение, средата за разработка на Java трябва да бъде актуална, тъй като фиксира грешки.
- Избягвайте примитивни типове данни като float, десетично или отрицателно цяло число, както и анонимни типове данни . В JAXB няма еквивалент за това. В противен случай могат да се конвертират обекти, числови типове данни, списъци и набори. JAXB също не може да обработва сложни типове данни като java.time.LocalDate . Това изисква специално създаден адаптер .
- В технически жаргон посоката от Java към XML се нарича marshaling, докато unmarshaling означава противоположна посока.
XML анотации
Последни видеоклипове
JAXB за начинаещи: урок, използвайки примера на колекция от CD
AudioCD.java: Тук са дефинирани атрибутите на аудио CD
MusicDB.java: Музикалната колекция се състои от списък с аудио CD
Нашият урок е относно колекция от CD, която се извежда в XML. Състои се от няколко аудио CD. Изпълнителят, годината на издаване, името на албума и песните се записват за всеки аудио CD.
- Първо трябва да се създаде класът, който съдържа данните на аудио CD. Това включва изпълнителя, годината на издаване, албума и песните, които са на компактдиска.
- За по-добър контрол на изхода във формат XML са необходими XML пояснения, които започват с @ под Java.
- Коренният елемент в XML файла може да бъде зададен, като се използва следното пояснение: @XmlRootElement (name = "Audiocd")
- Можете да поставите пояснение над методите на getter или setter, което определя алтернативно име за атрибут Java. Например, вместо атрибутна година, трябва да се изведе годината на публикуване: @XmlElement (name = "година на публикуване")
- Редът на атрибутите се определя от пояснението @XmlType (propOrder = {"изпълнител", "заглавие", "година", "списък с песни"}) . Това означава, че името на изпълнителя се появява първо във файла XML, последвано от името на албума, годината на издаване и списъка с песните. В противен случай редът зависи от Java файла.
- След това създайте нов клас Java, наречен MusicDB, който съдържа списък с аудио CD. Името на музикалната колекция и местоположението на музикалната колекция също се записват тук. По принцип процедурата е подобна на тази в Java файла, споменат по-горе.
От Java обекти до XML файлове
Последни видеоклипове
AudioCDMain.java: Тук се създават няколко аудио CD
AudioCDMain.java: Създайте музикалната колекция
AudioCDMain.java: Преобразува кода в XML
Самото преобразуване се извършва в тестова програма, по-точно в основния метод.
- Първо, създайте няколко екземпляра на аудио CD, така че да се създадат множество аудио CD.
- Необходим е и екземпляр от музикалната колекция от типа MusicDB.
- В допълнение, JAXB трябва да знае кой клас Java съдържа коренния елемент. В нашия случай това е клас MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- Преобразуването се осъществява с помощта на екземпляра Marshaller, който е свързан с споменатия по-горе метод JAXB: Marshaller m = context.createMarshaller ();
- Методът Marshaller предоставя допълнителни опции, като например, че 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 (нов FileReader (MUSICDB_XML));