Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / CDATA в jaxb ? / 17 сообщений из 17, страница 1 из 1
14.05.2021, 16:37
    #40070389
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
мне нужно поле с содержимым CDATA
как в xml так и обратно

поискал что пишут....

одни предлагают адаптер, что наверное будет работать, но мне не нравится.

@XmlCDATA я попробовал, но почему-то не работает.
не понял как им пользоваться....

есть еще варианты ?
нужно что-то простое и в обе стороны
...
Рейтинг: 0 / 0
14.05.2021, 17:22
    #40070405
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
grok,
Простое?
Байты в base64 и в обычное строковое поле xml
...
Рейтинг: 0 / 0
14.05.2021, 21:19
    #40070470
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
grok

@XmlCDATA я попробовал, но почему-то не работает.
не понял как им пользоваться....

Покажи как ты пользовался.
...
Рейтинг: 0 / 0
15.05.2021, 12:29
    #40070514
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
mayton
grok

@XmlCDATA я попробовал, но почему-то не работает.
не понял как им пользоваться....

Покажи как ты пользовался.


Код: 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.
public class Main {

    @XmlRootElement
    @XmlAccessorType(XmlAccessType.PROPERTY)
    public static class Test {

        public String zzz;

        @XmlCDATA
        public String getZzz() {
            return zzz;
        }

        @XmlCDATA
        public void setZzz(String zzz) {
            this.zzz = zzz;
        }
    }

    public static void main(String[] args) throws Exception {

        Test t = new Test();
        t.setZzz("qqq>>>");

        JAXBContext jaxbContext = JAXBContext.newInstance(Test.class);
        Marshaller marshaller = jaxbContext.createMarshaller();
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
        marshaller.marshal(t, bs);

        System.out.println(bs.toString("UTF-8"));
    }
}
...
Рейтинг: 0 / 0
15.05.2021, 12:31
    #40070515
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
PetroNotC Sharp
grok,
Простое?
Байты в base64 и в обычное строковое поле xml


не пойдет, потому что xml будут читать глазами и править руками
потому и нужно CDATA, даже ескейпинг не пойдет
...
Рейтинг: 0 / 0
15.05.2021, 16:08
    #40070538
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
grok,
Ты что то не договорил.
Просто "потому что руками" не причина.
А вот если кто то в здравом уме пишет теги руками. То они могут помешать парсеру.
Например так
<![CDATA[<sender>John Smith</sender>]]>
Неужели теги пишете?
...
Рейтинг: 0 / 0
15.05.2021, 17:46
    #40070542
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
Не похоже, что есть что-то стандартное в jaxb для принудительного отображения в cdata
@XmlCDATA из какого пакета? - похоже, что из эклипсового? Если она оттуда, то надо использовать эклипсовую имплементацию jaxb . Если поменять имплементацию нельзя, то надо гуглить костыли, для той, которая используется
...
Рейтинг: 0 / 0
15.05.2021, 23:21
    #40070559
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
Ну подкинул задачку. Этот JAXb уже в 11-тке и не летает.
...
Рейтинг: 0 / 0
16.05.2021, 00:00
    #40070562
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
Jackson вроде из коробки поддерживает эти си-даты.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@JacksonXmlRootElement(localName = "book-info")
public class BookInfo {

    @JacksonXmlElementWrapper
    private String title;

    @JacksonXmlElementWrapper
    private String author;

    @JacksonXmlCData
    private String content;



Код: 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.
@Test
    void test() throws JAXBException, IOException {

        JacksonXmlModule module = new JacksonXmlModule();
        // and then configure, for example:
        module.setDefaultUseWrapper(false);
        XmlMapper xmlMapper = new XmlMapper(module);
        xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);


        /*JAXBContext jaxbContext = JAXBContext.newInstance(BookInfo.class);
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);*/

        BookInfo bookInfo = new BookInfo();
        bookInfo.setTitle("Лелия");
        bookInfo.setAuthor("Жорж Санд.");
        bookInfo.setContent("Когда, поддавшись легковерной надежде");

        StringWriter sw = new StringWriter();

        xmlMapper.writeValue(sw, bookInfo);

        /*marshaller.marshal(bookInfo, sw);
        sw.flush();*/

        assertEquals("",
                sw.toString());
    }



Код: xml
1.
2.
3.
4.
5.
<book-info>
  <title>Лелия</title>
  <author>Жорж Санд.</author>
  <content><![CDATA[Когда, поддавшись легковерной надежде]]></content>
</book-info>
...
Рейтинг: 0 / 0
16.05.2021, 00:07
    #40070563
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
mayton
Ну подкинул задачку. Этот JAXb уже в 11-тке и не летает.

Не понял, из 11ой же как раз все и выпилили
...
Рейтинг: 0 / 0
16.05.2021, 03:27
    #40070576
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
SpringMan
Не похоже, что есть что-то стандартное в jaxb для принудительного отображения в cdata
@XmlCDATA из какого пакета? - похоже, что из эклипсового? Если она оттуда, то надо использовать эклипсовую имплементацию jaxb . Если поменять имплементацию нельзя, то надо гуглить костыли, для той, которая используется


нет, не эклипс

я всунул че мне идея предложила

com.sun.xml.internal.txw2.annotation.XmlCDATA
...
Рейтинг: 0 / 0
16.05.2021, 03:31
    #40070577
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
PetroNotC Sharp
grok,
Ты что то не договорил.
Просто "потому что руками" не причина.
А вот если кто то в здравом уме пишет теги руками. То они могут помешать парсеру.
Например так
<![CDATA[<sender>John Smith</sender>]]>
Неужели теги пишете?


мне казалось, в CDATA можно писать всё что угодно, на то оно и CDATA
реально, у меня там будет sql-запрос (не спрашивайте зачем)
в котором теоритически бывают строковые литералы с тегами
(у меня на самом деле нет)
...
Рейтинг: 0 / 0
16.05.2021, 04:28
    #40070580
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
SpringMan
Не похоже, что есть что-то стандартное в jaxb для принудительного отображения в cdata
@XmlCDATA из какого пакета? - похоже, что из эклипсового? Если она оттуда, то надо использовать эклипсовую имплементацию jaxb . Если поменять имплементацию нельзя, то надо гуглить костыли, для той, которая используется


Можно ли как-то прикрутить эклипсовую имплементацию в IDEA ?
Я бы выбрал этот вариант если возможно
...
Рейтинг: 0 / 0
16.05.2021, 05:15
    #40070581
grok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
grok
SpringMan
Не похоже, что есть что-то стандартное в jaxb для принудительного отображения в cdata
@XmlCDATA из какого пакета? - похоже, что из эклипсового? Если она оттуда, то надо использовать эклипсовую имплементацию jaxb . Если поменять имплементацию нельзя, то надо гуглить костыли, для той, которая используется


Можно ли как-то прикрутить эклипсовую имплементацию в IDEA ?
Я бы выбрал этот вариант если возможно


попробовал, не выходит

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/persistence/jaxb/JAXBContextFactory : Unsupported major.minor version 52.0

запускаю на 1.7
...
Рейтинг: 0 / 0
16.05.2021, 09:43
    #40070588
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
grok,
Дело ваше. Писать просто руками в xml уже давно плохой тон.
Понимаю что вам дали ТЗ такое.
Удачи!
...
Рейтинг: 0 / 0
16.05.2021, 12:21
    #40070607
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
grok,

Или версию java поднимите или подаунгрейдите версию зависимости - никто же не знает, какую конкретно версию используете
...
Рейтинг: 0 / 0
16.05.2021, 20:24
    #40070661
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CDATA в jaxb ?
grok
grok
пропущено...


Можно ли как-то прикрутить эклипсовую имплементацию в IDEA ?
Я бы выбрал этот вариант если возможно


попробовал, не выходит

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/eclipse/persistence/jaxb/JAXBContextFactory : Unsupported major.minor version 52.0

запускаю на 1.7


Компилируете в одной версии Java а запускаете в другой.
Компилируйте в той же версии, что и запускаете.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / CDATA в jaxb ? / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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