Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
3 / 3 / 0
Регистрация: 28.02.2011
Сообщений: 95
1

XMLDecoder\Encoder сериализовать объекты коллекции

18.04.2012, 21:07. Показов 1793. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!

Есть класс сериализатор:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Serializer {
 
    public Serializer() {
    }
 
    public void serializeCollectionToXML(String xmlFileLocation, Collection collection) throws FileNotFoundException {
        FileOutputStream os = new FileOutputStream(xmlFileLocation);
        XMLEncoder encoder = new XMLEncoder(os);
        for(Object object : collection)
        {
            encoder.writeObject(object);
        }
        encoder.close();
    }
 
    public ArrayList<Object> deserializeCollectionFromXML(String xmlFileLocation) throws IOException {
        ArrayList<Object> collection = new ArrayList<Object>();
        FileInputStream os = new FileInputStream(xmlFileLocation);
        XMLDecoder decoder = new XMLDecoder(os);
        while(os.read() != -1)
        {
            collection.add(decoder.readObject());
        }
        decoder.close();
        return collection;
    }
}
Сериализую так:
Java
1
serializer.serializeCollectionToXML(ResourcePath + "courses.xml", alc);//alc - заполненный ArrayList
Десериализую так:
Java
1
ArrayList<Object> me = serializer.deserializeCollectionFromXML(ResourcePath + "courses.xml");
Десериализатор обваливается с эксепшеном:
Java
1
2
3
4
5
6
7
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
Continuing ...
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at java.beans.XMLDecoder.readObject(XMLDecoder.java:238)
    at Utilities.Serializer.deserializeCollectionFromXML(Serializer.java:50)
    at ScheduleManager.Parser.parseData(Parser.java:103)
    at ScheduleManager.Main.main(Main.java:15)
на строчке:
Java
1
collection.add(decoder.readObject());
внутри функции readObject().
Подскажите, что делаю не так? Всю голову сломал себе.
Заранее огромное спасибо за ответ!

p.s. Если использовать следующую функцию для десериализации:
Java
1
2
3
4
5
6
7
public Object deserializeFromXML(String xmlFileLocation) throws FileNotFoundException {
        FileInputStream os = new FileInputStream(xmlFileLocation);
        XMLDecoder decoder = new XMLDecoder(os);
        Object deSerializedObject = decoder.readObject();
        decoder.close();
        return deSerializedObject;
    }
То первый элемент достается отлично, но остальное, естественно, с ее помощью достать не получится.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2012, 21:07
Ответы с готовыми решениями:

JAXWS+JAXB или + java.beans.XMLDecoder/XMLEncoder
С помощью чего можно преобразовывать Об-&gt;XML-&gt;Об JAXB? Тогда примеры... Есть проектик -...

Как сериализовать и десериализовать объекты классов?
Имеются классы Pozition.cs using System; using System.Collections.Generic; using...

Какие объекты можно сериализовать и десериализовать в XML / JSON?
Здравствуйте. Как можно определять какие объекты можно серилизовать и десирилизовать в XML или...

Сериализовать/десериализовать объекты, одним из членов которого является SolidBrush
Мне нужно сериализовать/десериализовать объекты типа SomeType, одним из членов которого является...

1
12 / 12 / 4
Регистрация: 17.12.2012
Сообщений: 71
13.01.2013, 00:57 2
По-моему все дело в os.read() != 0, после его вызова съедается первый байт следующего объекта.
Попробуйте сначала писать длину коллекции, чтобы не пользоваться вышеупомянутым кодом.
Если проблема давно решена, напишите как решили, сам пока разбираюсь
0
13.01.2013, 00:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2013, 00:57
Помогаю со студенческими работами здесь

Объекты и коллекции
Условие: Написать макрос, который создает новую книгу. Запрашивает имя этой книги , а затем...

Обнулить объекты в коллекции
Добрый день. Необходимо обнулить объекты в коллекции qwertyList, присвоить значение null всем...

Выбрать из коллекции объекты класса по определенному значению
В коллекции элементы класса Song. Вытащить все элементы со значением genre_id == 18(пример) и...

Объекты, коллекции и привязка данных...(мнения и подходы)
Доброе время суток! Как обычно бывает пишешь, пишешь программы...Нарабатываются свою подходы к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru