У меня есть настройка JAXB, где я использую @XmlJavaTypeAdapter для замены объектов типа Person
объектами типа PersonRef
, которые содержат только идентификатор пользователя UUID. Это прекрасно работает. Однако сгенерированный XML переопределяет одно и то же пространство имен (xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
) каждый раз, когда он используется. Хотя это вообще нормально, это просто не кажется правильным.
Как настроить JAXB для объявления xmlns: xsi в самом начале документа? Могу ли я вручную добавить объявления пространства имен в корневой элемент?
Вот пример того, что я хочу достичь:
Ток:
<person uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a">
<relation type="CHILD">
<to xsi:type="personRef" uuid="56a930c0-5499-467f-8263-c2a9f9ecc5a0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</relation>
<relation type="CHILD">
<to xsi:type="personRef" uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</relation>
<!-- SNIP: some more relations -->
</person>
Требуется:
<person uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<relation type="CHILD">
<to xsi:type="personRef" uuid="56a930c0-5499-467f-8263-c2a9f9ecc5a0"/>
</relation>
<relation type="CHILD">
<to xsi:type="personRef" uuid="6ec0cf24-e880-431b-ada0-a5835e2a565a"/>
</relation>
<!-- SNIP: some more relations -->
</person>