powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / CDATA в jaxb ?
17 сообщений из 17, страница 1 из 1
CDATA в jaxb ?
    #40070389
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне нужно поле с содержимым CDATA
как в xml так и обратно

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

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

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

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

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

Покажи как ты пользовался.
...
Рейтинг: 0 / 0
CDATA в jaxb ?
    #40070514
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
CDATA в jaxb ?
    #40070515
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
grok,
Простое?
Байты в base64 и в обычное строковое поле xml


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

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


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

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

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


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


Можно ли как-то прикрутить эклипсовую имплементацию в IDEA ?
Я бы выбрал этот вариант если возможно
...
Рейтинг: 0 / 0
CDATA в jaxb ?
    #40070581
grok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
CDATA в jaxb ?
    #40070588
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grok,
Дело ваше. Писать просто руками в xml уже давно плохой тон.
Понимаю что вам дали ТЗ такое.
Удачи!
...
Рейтинг: 0 / 0
CDATA в jaxb ?
    #40070607
SpringMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grok,

Или версию java поднимите или подаунгрейдите версию зависимости - никто же не знает, какую конкретно версию используете
...
Рейтинг: 0 / 0
CDATA в jaxb ?
    #40070661
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / CDATA в jaxb ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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