17 / 17 / 3
Регистрация: 28.10.2012
Сообщений: 201
1

Сохранение Vector<> в .xml

05.11.2014, 11:03. Показов 1123. Ответов 2
Метки нет (Все метки)

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
28
29
@XmlType(propOrder = { "name", "group", "date" }, name = "student")
public class Student 
{
    private String name;
    private int group;
    private String date;
    
    public Student(){}
    
    @XmlElement
    public boolean setName(String name){
    ...}
    
    @XmlAttribute
    public boolean setGroup(int group){
    ...}
    
    public boolean setDate(String date){
    ...}
    
    public String getName(){
    ...}
    
    public int getGroup(){
    ...}
    
    public String getDate(){
    ...}
}


Далее класс Группа, хранящая в себе Студентов в виде Vector<Student>
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@XmlType(propOrder = { "department", "index", "students" }, name = "group")
@XmlRootElement
public class Group 
{
    private int index;
    private String department;
    
    @XmlElementWrapper
    @XmlElement(name="List of Students")
    private Vector<Student> students;
 
    public Group()
    {
        students = new Vector<Student>();
    }
    
    еще методы()......
}


Это всё находится в классе Cache, который необходимо сохранить в .xml. Иерархия понятна.
Сам класс Cache:
Кликните здесь для просмотра всего текста
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
28
@XmlRootElement
public class Cache 
{
    private Vector<Group> groups;
    private Vector<Student> students;
    
    public Cache() 
    {
        groups = new Vector<Group>();
        students = new Vector<Student>();
    }
    
    //@XmlElementWrapper
    //@XmlElement(name="List of Groups")
    public boolean setAllGroups(Vector<Group> groups)
    {
        this.groups = groups;
        return true;
    }
    
    //@XmlElementWrapper
    //@XmlElement(name="List of Students")
    public boolean setAllStudent(Vector<Student> students)
    {
        this.students = students;
        return true;
    }
}

Сохранение производится с помощью класса Store, у которого есть метод, принимающий Vector<Group> groups и Vetor<Student> students.
Выглядит так:
Кликните здесь для просмотра всего текста
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
public class Store 
{
    public Store(){}
    
    
    public void createXML(Vector<Group> groups, Vector<Student> students) 
    {
        try 
        {
            File file = new File("jaxb.xml");
            JAXBContext c = JAXBContext.newInstance(Group.class);
            Marshaller jaxbmarchaller = c.createMarshaller();
            
            jaxbmarchaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
             
            jaxbmarchaller.marshal(groups, file);//в файл
            jaxbmarchaller.marshal(groups, System.out);//в коммандную строку
            
        } 
        catch (JAXBException e) 
        {
            e.printStackTrace();
        }
    }
}


Так вот, выходит ошибка:
class java.util.Vector nor any of its super class is known to this context. : at model.Store.createXML(Store.java:27)

Подскажите как работать с этими аннотациями в данном случае. Как сохранить этот вектор?
P.S. прикладываю схему классов
Миниатюры
Сохранение Vector<> в .xml  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2014, 11:03
Ответы с готовыми решениями:

java сохранение обьектов в xml
Здравствуйте. Пытаюсь сохранить обьекты в xml, вот так: User u = new User(&quot;Костя&quot;); ...

Сохранение списка объектов класса в ручную, сохранение в XML. Без сериализации.
Здравствуйте! Хотел спросить. Как можно сохранить список объектов в XML файл вручную? Я...

Редактирование и сохранение структуры <vector>
Доброго времени суток, не могу ума приложить, как реализовать функцию для редактирования данных в...

Сохранение xml данных в xml-файл
Прошу помощи: Есть переменная json, которую необходимо перевести в xml, а затем сохранить на...

2
17 / 17 / 3
Регистрация: 28.10.2012
Сообщений: 201
05.11.2014, 12:14  [ТС] 2
Если класс Store переписать так:
Кликните здесь для просмотра всего текста
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
28
29
public class Store 
{
    public Store(){}
    
    
    public void createXML(Vector<Group> groups, Vector<Student> students, Cache cache) 
    {
        try 
        {
            File file = new File("jaxb.xml");
            JAXBContext c = JAXBContext.newInstance(Group.class);
            Marshaller jaxbmarchaller = c.createMarshaller();
            
            jaxbmarchaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            
            for(int i = 0; i < groups.size(); i++)
            {
                jaxbmarchaller.marshal(groups.get(i), file);//в файл
                jaxbmarchaller.marshal(groups.get(i), System.out);//в коммандную строку
            }
 
 
        } 
        catch (JAXBException e) 
        {
            e.printStackTrace();
        }
    }
}

То получается два xml в xml:
Кликните здесь для просмотра всего текста
XML
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
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group>
    <department>FETIP</department>
    <index>0</index>
    <students>
        <List of Students group="0">
            <name>Ivan</name>
            <date>04.11.14</date>
        </List of Students>
        <List of Students group="0">
            <name>Pavel</name>
            <date>04.11.14</date>
        </List of Students>
        <List of Students group="0">
            <name>Stepan</name>
            <date>04.11.14</date>
        </List of Students>
    </students>
</group>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group>
    <department>AMF</department>
    <index>1</index>
    <students>
        <List of Students group="1">
            <name>Vanya</name>
            <date>05.11.14</date>
        </List of Students>
        <List of Students group="1">
            <name>Pasha</name>
            <date>05.11.14</date>
        </List of Students>
        <List of Students group="1">
            <name>Stepa</name>
            <date>05.11.14</date>
        </List of Students>
    </students>
</group>
0
Эксперт Java
4090 / 3824 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
05.11.2014, 23:31 3
По поводу исходной ошибки. Насколько я знаю, поможет создание JAXBContext как
Java
1
JAXBContext c = JAXBContext.newInstance(Group.class, Vector.class);
0
05.11.2014, 23:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2014, 23:31
Помогаю со студенческими работами здесь

Из XML-файла извлечь значения его атрибутов в массив типа std::vector<int>
Всем привет. Есть XML-файл, из которого требуется извлечь значения его атрибутов. Подскажите,...

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt;...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>)
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало...

Сохранение в xml
Добрый день, я новичок в делфи и разрабатывая экспертную систему столкнулся с такой проблемой как...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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