Как настроить рендерер Xml в Rapidoid - PullRequest
0 голосов
/ 05 февраля 2019

Я действительно новичок в Rapidoid, поэтому прошу прощения за мое невежество.

У нас есть требование для создания полезных данных мыла xml, содержащих атрибуты и текст, что-то вроде ниже.

<profile xsi:type="ent:Profile" xmlns:ent="http://example.com">
               <city xsi:type="xsd:string">San Francisco</city>
               <country xsi:type="xsd:string">USA</country>
               <email xsi:type="xsd:string">abc@test.com</email>
</profile>

Очевидно, что рендеринг XML по умолчанию на Rapidoid не учитывает аннотации JAXB @XmlAttribute и @XmlValue.

например.On.post ("/ test"). Xml ((Req req) -> new Profile ());

дает следующий ответ:

<Profile>
    <city>
        <type>xsd:string</type>
        <value>1234</value>
    </city>
</Profile>

где ожидаемый ответ, если аннотации Jaxb соблюдаются, равен:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Profile>
    <city xsi:type="xsd:string">1234</city>
</Profile>

Вероятно, я могу достичь желаемого результата с помощью простого рендеринга и выполнения сортировки вручную xml, как показано ниже:

        On.post("/test2").plain((SetRakutenKaiinModel b)  ->{
            JAXBContext jaxbContext = JAXBContext.newInstance(Profile.class);

            Marshaller marshaller = jaxbContext.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            StringWriter stringWriter = new StringWriter();
            marshaller.marshal(new Profile(), stringWriter);
            return stringWriter.toString();
        });

Но хотелось бы более чистого подхода, такого как настройка / переопределение сериализатора XML по умолчанию.

Действительно ценю ваши входные данные.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...