Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/26: Рейтинг темы: голосов - 26, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8

XML JAXB ошибка в реализации

08.10.2013, 18:01. Показов 5981. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Я новичек и в Хмл и в Java. Подскажите, в чем именно ошибка:
Есть XML файл:
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0"?>
<Soft>
    <Company name="EPSYS">
        <system>
            <product price="75" size="200">HDD Scan</product>
            <product price="80" size="150">Motherboard Tools</product>
            <product price="5" size="10">Keyboard Tools</product>
        </system>
        <editor>
            <product price="100" size="1080">Microsoft Office 2010</product>
            <product price="150" size="550">Adobe Photoshop SC9</product>
        </editor>
    </Company>
</Soft>


Сделал три класса:
1.
Кликните здесь для просмотра всего текста

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
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
 
public class Product {
 
        private String name;    //Название софтины в поле ПРОДУКТ
 
 
        @XmlElement
        public String getName(){
            return name;
        }
 
        private int price;      //Атрибут PRICE в поле Продукт
 
        @XmlAttribute
        public int getPrice(){
            return price;
        }
 
        private int size;       //Атрибут SIZE в поле Продукт
 
        @XmlAttribute
        public int getSize(){
            return price;
        }
 
}


2.
Кликните здесь для просмотра всего текста

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
30
31
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
 
public class Company {
 
    private String name;
 
    @XmlAttribute          //Получаем название компании
    public String getName(){
        return name;
    }
 
    private List<Product> system;           //Получаем список продуктов в поле system
    @XmlElementWrapper(name = "system")
    @XmlElement
    public List<Product> getSystem(){
        return system;
    }
 
 
    public List<Product> editor;           //Получаем список продуктов в поле editor
    @XmlElementWrapper(name = "editor")
    @XmlElement
    public List<Product> getEditor(){
        return editor;
    }
 
}


3.
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
 
@XmlRootElement
public class Soft {
 
    private List<Company> company;    //Получаем список компаний
    @XmlElementWrapper(name = "Company")
    @XmlElement
    public List<Company> getCompany(){
        return company;
    }
 
}


и Мэйн:
Кликните здесь для просмотра всего текста

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
30
31
32
33
34
35
36
import java.io.File;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.LinkedList;
import java.util.List;
 
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.transform.stream.StreamSource;
 
public class Main{
 
    public static void main(String[] args) {
 
        try {
 
            File file = new File("SoftList.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(new Class[]{Soft.class, Company.class, Product.class});
            //Unmarshaller um = jaxbContext.createUnmarshaller();
            //Soft soft = (Soft) um.unmarshal(file);
 
            //System.out.println(soft);
 
 
        } catch (JAXBException e) {
            e.printStackTrace();
        }
 
    }
 
}



Выдает такие ошибки:
Кликните здесь для просмотра всего текста
"C:\Program Files\Java\jdk1.7.0_40\bin\java" -Didea.launcher.port=7536 "-Didea.launcher.bin.path=D:\SOFT\IntelliJ IDEA Community Edition 12.1.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.7.0_40\jre\lib\charsets. jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\deploy.ja r;C:\Program Files\Java\jdk1.7.0_40\jre\lib\javaws.ja r;C:\Program Files\Java\jdk1.7.0_40\jre\lib\jce.jar;C :\Program Files\Java\jdk1.7.0_40\jre\lib\jfr.jar;C :\Program Files\Java\jdk1.7.0_40\jre\lib\jfxrt.jar ;C:\Program Files\Java\jdk1.7.0_40\jre\lib\jsse.jar; C:\Program Files\Java\jdk1.7.0_40\jre\lib\managemen t-agent.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\plugin.ja r;C:\Program Files\Java\jdk1.7.0_40\jre\lib\resources .jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\rt.jar;C: \Program Files\Java\jdk1.7.0_40\jre\lib\ext\acces s-bridge-64.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\dnsns .jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\jacce ss.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\local edata.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\sunec .jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\sunjc e_provider.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\sunms capi.jar;C:\Program Files\Java\jdk1.7.0_40\jre\lib\ext\zipfs .jar:\WORK\IDEA\TEST\out\production\TE ST:\SOFT\IntelliJ IDEA Community Edition 12.1.4\lib\idea_rt.jar" com.intellij.rt.execution.application.Ap pMain Main
com.sun.xml.internal.bind.v2.runtime.Ill egalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Class has two properties of the same name "editor"
this problem is related to the following location:
at public java.util.List Company.getEditor()
at Company
at public java.util.List Soft.getCompany()
at Soft
this problem is related to the following location:
at public java.util.List Company.editor
at Company
at public java.util.List Soft.getCompany()
at Soft

at com.sun.xml.internal.bind.v2.runtime.Ill egalAnnotationsException$Builder.check(I llegalAnnotationsException.java:91)
at com.sun.xml.internal.bind.v2.runtime.JAX BContextImpl.getTypeInfoSet(JAXBContextI mpl.java:451)
at com.sun.xml.internal.bind.v2.runtime.JAX BContextImpl.<init>(JAXBContextImpl.java :283)
at com.sun.xml.internal.bind.v2.runtime.JAX BContextImpl.<init>(JAXBContextImpl.java :126)
at com.sun.xml.internal.bind.v2.runtime.JAX BContextImpl$JAXBContextBuilder.build(JA XBContextImpl.java:1148)
at com.sun.xml.internal.bind.v2.ContextFact ory.createContext(ContextFactory.java:13 0)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:606)
at javax.xml.bind.ContextFinder.newInstance (ContextFinder.java:248)
at javax.xml.bind.ContextFinder.newInstance (ContextFinder.java:235)
at javax.xml.bind.ContextFinder.find(Contex tFinder.java:445)
at javax.xml.bind.JAXBContext.newInstance(J AXBContext.java:637)
at javax.xml.bind.JAXBContext.newInstance(J AXBContext.java:584)
at Main.main(Main.java:24)
at sun.reflect.NativeMethodAccessorImpl.inv oke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.inv oke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.jav a:43)
at java.lang.reflect.Method.invoke(Method.j ava:606)
at com.intellij.rt.execution.application.Ap pMain.main(AppMain.java:120)

Process finished with exit code 0


Подскажите, где я налажал?
Делал на вот этом и вот этом примерах.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2013, 18:01
Ответы с готовыми решениями:

Запись массива объектов в XML JAXB
Здравствуйте! Решаю эту задачу: (C#)Собеседование: самая любимая задача по ООП Реализовал запись массива объектов в xml. Но проблема в...

Можно ли используя JAXB вытащить данные из XML и вывести их консоль?
Здравствуйте, я начинающий) Товарищи подскажите, как с помощью JAXB вытащить данные в консоль? Я знаю как это сделать с помощью SAX, но...

Срочно, не могу разобраться с JAXB XML в Eclipce
Создать консольное приложение для управления каталогом книг в нескольких библиотеках. Оно позволяет найти книгу в одной или нескольких...

24
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
11.10.2013, 11:05
Студворк — интернет-сервис помощи студентам
ну как и к обычным пропертям, анмаршал и гет из обьекта проперти которые мапятся на атрибуты или value
0
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
11.10.2013, 12:22  [ТС]
Вот так получилось:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for(Company company:soft.getCompany()){
                System.out.println("Company = "+company.getName());
                Integer systemPrice=0;
                Integer educPrice=0;
                for (Product product:company.getSystem()){
                    systemPrice+=product.getPrice();
                }
 
                for (Product product:company.getEditor()){
                    educPrice+=product.getPrice();
                }
                System.out.println("Price of system soft = "+systemPrice);
                System.out.println("Price of editor soft= "+educPrice);
                System.out.println("Full price = "+(educPrice+systemPrice));
            }


А что например, если мы не знаем сколько вообще вложений Company в поле Soft и аналогично, если мы не знаем сколько у нас типов софта в поле Company?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
11.10.2013, 13:42
Цитата Сообщение от Leostarts Посмотреть сообщение
А что например, если мы не знаем сколько вообще вложений Company в поле Soft и аналогично, если мы не знаем сколько у нас типов софта в поле Company?
почему же не знаем, это же коллекция, мы всегда можем спросить размер )
0
0 / 0 / 0
Регистрация: 14.10.2012
Сообщений: 8
11.10.2013, 13:53  [ТС]
Ну мы же не знаем всех названий.. А у нас в реализации везде упомянуто, что есть "system", а что есть "editor".. А если там будет куча других названий, как мы прочитаем сам хмл если мы не знаем в принципе что там в нём есть ещё, но знаем что все данные аналогичны тем что у нас есть?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
11.10.2013, 14:02
Цитата Сообщение от Leostarts Посмотреть сообщение
А если там будет куча других названий
не будет, так как такой хмл не размаршалится, по причине невалидности (если есть валидация по схеме) или просто заигнорит все теги отличные от editor и system
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2013, 14:02

Ошибка пр генерации JAXB класса
Error: Could not find or load main class com.sun.tools.internal.xjc.XJCFacade Как исправить?

JAXB
Привет коллеги! Ситуация такая. Я всегда работал с dom при парсировке xml, но вот не давно познакомился с JAXB. Сохраняет объекты в xml...

JAXB
Здравствуйте! Каким образом можно получить список объектов созданных на основе xml? Один объект я могу получить. Но когда нужна коллекция,...

Soap jaxb
У меня по какой-то пичине не генирируються классы с помощью jaxb проект maven вот poom &lt;build&gt; &lt;plugins&gt; ...

JAXB атрибуты
Есть некий класс @XmlRootElement(name = &quot;Data&quot;) public class Test { private HashMap&lt;String, String&gt; test; public...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru