Не удаётся сохранить HashSet коллекцию объектов в XML файл (java)

258
25 февраля 2017, 04:39

Имеются несколько объектов, которые нужно объединить в HashSet коллекцию и сохранить в XML файле и в дальнейшем их от туда извлечь

package laba2;
import javax.xml.bind.JAXBException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import static laba2.XMLworker.*;
public class Laba2 {
    public static void main(String[]args){
        FoodResidus fr1 = new FoodResidus();
        fr1.name=someName1;
        fr1.ID=0;           
        FoodResidus fr2 = new FoodResidus();
        fr2.name=someName2;
        fr2.ID=1; 
        FoodResidus fr3 = new FoodResidus();
        fr3.name=someName3;
        fr3.ID=2; 
        HashSet<FoodResidus> collection = new HashSet<>();
        rubbishBin.add(fr1);
        rubbishBin.add(fr2);
        rubbishBin.add(fr3);

        try {
            saveCollection("some.xml",collection); 
        } catch (JAXBException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Для это создал класс с двумя соответсвующими методами

package laba2;
import javax.xml.bind.*;
import javax.xml.namespace.QName;
import java.io.*;
import java.util.ArrayList;
import java.util.HashSet;
public class XMLworker {
    public static void saveCollection(String path, FoodResidus[] hs)throws JAXBException,IOException {
        JAXBContext context = JAXBContext.newInstance(FoodResidus[].class);
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        JAXBElement<FoodResidus[]> jaxbElement = new JAXBElement<FoodResidus[]>(new QName("My_XML_Class"), FoodResidus[].class, hs);
        File fileWrite = new File(path);
        FileWriter fw = new FileWriter(fileWrite);
        BufferedWriter bw = new BufferedWriter(fw);
        marshaller.marshal(jaxbElement, bw);
    }
    public static HashSet getCollection(String path)throws JAXBException,IOException{
        File fileRead = new File(path);
        FileReader fr = new FileReader(fileRead);
        BufferedReader br = new BufferedReader(fr);
        HashSet returnedHS = JAXB.unmarshal(br, HashSet.class);
        return returnedHS;
    }
}

Смотрю в получившийся файл, а там это:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<My_XML_Class/>

Пробовал сохранять каждый объект отдельно, всё выходит корректно и с помощью метода getCollection() они прекрасно извлекаются. Что не так с коллекциями?

Вот класс FoodResidus

package laba2; 
 
public class FoodResidus { 
 
    public String name = "someOfFoodresidus"; 
 
    public Integer ID=666; 
 
    public boolean fliesAttraction=false; 
 
    public FoodResidus(){}    
    } 
}

READ ALSO
Как сохранить Uri в базу данных

Как сохранить Uri в базу данных

Я загружаю фото из галлереи таким способом

253
Код Java на Scala

Код Java на Scala

Хочу уточнить вопрос про использование классов и библиотек написанных на java в языке scalaЧто необходимо сделать чтобы можно это сделать? Импортировать?...

253
Ошибка при запуске Unit test. Failed to load ApplicationContext

Ошибка при запуске Unit test. Failed to load ApplicationContext

Пытаюсь протестировать метод (пока хотя бы один, потом и все остальные) из класса UserDBDaoДля этого написал UserDBDaoTest:

338
Java. Странное поведение методов totalMemory() и freeMemory()

Java. Странное поведение методов totalMemory() и freeMemory()

ЗдравствуйтеМне необходимо узнать сколько памяти занимает мой объект, и я делаю это так:

311