Проблема с префиксом пользовательского пространства имен JAXB
Есть ли другой способ управления пользовательскими префиксами пространства имен с помощью аннотаций, отличных от аннотации на уровне пакета @Xmlns
,
Можно ли это сделать на уровне элементов? Также возможно ли иметь одно пространство имен с несколькими префиксами?
1 ответ
Решение
Что вы на самом деле хотите сделать? Почему префиксы пространства имен важны для вас?
Нет стандартных аннотаций на уровне элементов для префиксов пространства имен.
Варианты управления префиксами пространства имен, которые я знаю:
@XmlNS
Вы уже упоминали.- Предоставление кастома
NamespacePrefixMapper
, - Низкоуровневая обработка XML (например, на уровне StAX, SAX или DOM).
Что я тоже могу себе представить:
@XmlElementRef
/@XmlElementRefs
обычно используют JAXBElements с QNames, которые имеют префиксы. Может быть, этот префикс будет использоваться.- Вы можете иметь
QName
свойство (xs:QName
в XSD) также может использоваться для добавления сопоставления пространства имен. - Вероятно, что-то в направлении
@XmlAnyElement
(содержащий элемент DOM). - Я думаю, что я также видел что-то в направлении
XmlAdapter
- Я думаю, что где-то была возможностьNamespacePrefixMapper
-aware. (На самом деле требуется для типов с поддержкой пространства имен, таких какQName
).