powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по JAXB
7 сообщений из 7, страница 1 из 1
Вопрос по JAXB
    #39331259
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть один по сути класс
в XML он может быть в двух местах
и там отличается только root element
остальное всё одинаково

можно ли как-то сделать чтоб это был именно один класс?
не хочется городить 2 класса которые отличаются только одной аннотацией XmlRootElement

ЗЫ пишу всё на аннотациях, xsd нет и не будет
...
Рейтинг: 0 / 0
Вопрос по JAXB
    #39331268
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл добавить

root element определяется парентом, возможно не одним
если парента нету должен быть какой-то default
...
Рейтинг: 0 / 0
Вопрос по JAXB
    #39331459
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grokесть один по сути класс
в XML он может быть в двух местах
и там отличается только root element
остальное всё одинаково

можно ли как-то сделать чтоб это был именно один класс?
не хочется городить 2 класса которые отличаются только одной аннотацией XmlRootElement

ЗЫ пишу всё на аннотациях, xsd нет и не будет

Ну на крайний случай есть .replaceAll(x,y)
<:o)
...
Рейтинг: 0 / 0
Вопрос по JAXB
    #39332292
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grokесть один по сути класс
в XML он может быть в двух местах
и там отличается только root element
остальное всё одинаково

можно ли как-то сделать чтоб это был именно один класс?
не хочется городить 2 класса которые отличаются только одной аннотацией XmlRootElement

ЗЫ пишу всё на аннотациях, xsd нет и не будет
можно,
но это будет костыль
дешевле сделать 1 класс
и 2 которые его на следовать будут
в них и определить рут элемент
...
Рейтинг: 0 / 0
Вопрос по JAXB
    #39332303
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grok,

Воспользуйтесь JAXBElement<>
...
Рейтинг: 0 / 0
Вопрос по JAXB
    #39332340
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmangrok,

Воспользуйтесь JAXBElement<>

а можно подробнее для нубов ?
...
Рейтинг: 0 / 0
Вопрос по JAXB
    #39332377
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grokUsmangrok,

Воспользуйтесь JAXBElement<>

а можно подробнее для нубов ?
Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
package org.example;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;

public class JAXBExample {

    @XmlRootElement
    @XmlType(propOrder = { "field" })
    @XmlAccessorType(XmlAccessType.FIELD)
    static class Xml1 {

        @XmlElement
        private String field;

        public String getField() {
            return field;
        }

        public void setField(String field) {
            this.field = field;
        }
    }

    @XmlRootElement
    @XmlType(propOrder = { "field" })
    @XmlAccessorType(XmlAccessType.FIELD)
    static class Xml2 {

        @XmlElement
        private String field;

        public String getField() {
            return field;
        }

        public void setField(String field) {
            this.field = field;
        }
    }

    public static void main(String[] args) throws Exception {
        Xml1 xml1 = new Xml1();
        xml1.setField("XML_1");

        Xml2 xml2 = new Xml2();
        xml2.setField("XML_2");

        JAXBContext context = JAXBContext.newInstance(Xml1.class, Xml2.class);

        try (StringWriter sw1 = new StringWriter(); StringWriter sw2 = new StringWriter()) {
            JAXBElement<Xml1> jaxbElement1 = new JAXBElement<>(new QName("abrakadabra"), Xml1.class, xml1);

            JAXBElement<Xml2> jaxbElement2 = new JAXBElement<>(new QName("avarakedavra"), Xml2.class, xml2);

            String xmlString1;
            String xmlString2;

            Marshaller m = context.createMarshaller();
            Unmarshaller u = context.createUnmarshaller();

            m.marshal(jaxbElement1, sw1);
            xmlString1 = sw1.toString();

            m.marshal(jaxbElement2, sw2);
            xmlString2 = sw2.toString();

            System.out.println(xmlString1);
            System.out.println(xmlString2);

            XMLInputFactory xif = XMLInputFactory.newFactory();
            XMLStreamReader xsr1 = xif.createXMLStreamReader(new StringReader(xmlString1));
            XMLStreamReader xsr2 = xif.createXMLStreamReader(new StringReader(xmlString2));

            xml2 = u.unmarshal(xsr1, Xml2.class).getValue();
            xml1 = u.unmarshal(xsr2, Xml1.class).getValue();

            System.out.println(xml1.getField());
            System.out.println(xml2.getField());
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
    }
}


Вывод:
Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><abrakadabra><field>XML_1</field></abrakadabra>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><avarakedavra><field>XML_2</field></avarakedavra>
XML_2
XML_1
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по JAXB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]