JAXB маршал ДинаБин - PullRequest
       27

JAXB маршал ДинаБин

0 голосов
/ 02 июля 2019

Я хочу добавить экземпляр DynaBean в xml, но хочу иметь атрибуты DynaProperties.У меня есть очень простое расширение для BasicDynaBean:

@XmlRootElement
private static class DynaBeanExtension extends BasicDynaBean {
    public DynaBeanExtension() {
        super(null);
    }
    public DynaBeanExtension(DynaClass dynaClass) {
        super(dynaClass);
    }
    @XmlElement
    @Override
    public Map<String, Object> getMap() {
        return super.getMap();
    }
}

Я создаю его экземпляр и пытаюсь выполнить маршалл:

DynaBeanExtension dynaBean = new DynaBeanExtension(dynaClass);
dynaBean.set("firstName", "SampleName");
dynaBean.set("lastName", "SampleSurname");
JAXBContext jaxbContext = JAXBContext.newInstance(DynaBeanExtension.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

В результате я получаю следующее:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dynaBeanExtension>
    <map>
        <entry>
            <key>firstName</key>
            <value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">SampleName</value>
        </entry>
        <entry>
            <key>lastName</key>
            <value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">SampleSurname</value>
        </entry>
    </map>
</dynaBeanExtension>

Как видите, карта сериализуется с механизмом по умолчанию.Как должна выглядеть реализация XmlAdapter, чтобы firstName и lastName были атрибутами?

...