Шаг 132.
Язык программирования Java.
Библиотека JAXB. Десериализация простых объектов

На этом шаге мы рассмотрим десериализацию простых объектов

Под десериализацией в нашем контексте мы будем понимать процесс преобразования xml файла в java объекты. Как и сериализация, десериализация в java довольно проста. Обратимся к следующему примеру:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import java.io.File;

public class Main {
    public static void main(String[] args) throws JAXBException {
        // 1
        File inFile = new File("cat.xml");

        // 2
        JAXBContext context = JAXBContext.newInstance(Cat.class);
        // 3
        Unmarshaller unmarshaller = context.createUnmarshaller();

        // 4
        Cat cat = (Cat) unmarshaller.unmarshal(inFile);

        System.out.println("десериализация завершена");

        System.out.println("name: " + cat.name);
        System.out.println("age: " + cat.age);
    }

    @XmlType(name = "cat")
    @XmlRootElement
    private static class Cat {
        String name;
        int age;

        public Cat() {
        }

        public void setName(String name) {
            this.name = name;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public int getAge() {
            return age;
        }
    }
}

Проект можно взять здесь


Рис. 1. Вывод программы

В пункте 1 указывается, из какого файла мы будем создавать объект. В пункте 2 мы создаем контекст, как и в случае с сериализацией. Различия с сериализацией начинается в пункте 3. В нем мы создаем объект Unmarshaller. С помощью данного объекта, а точнее с помощью функции unmarshal, происходит десериализация. Это происходит в пункте 4. Обратим внимание, что данная функция возвращает результирующий объект. Но функция unmarshal возвращает объект типа Object, поэтому вы должны провести преобразование типов.

На следующем шаге мы рассмотрим как сериализовывать сложные объекты

Предыдущий шаг Содержание Следующий шаг