У меня есть ситуация, когда мне нужно динамически настроить пространства имен для моих классов jaxb.мое пространство имен в классах jaxb имеет версию, которая должна динамически изменяться.
@XmlRootElement(name = "myobject",namespace="http://myhost.com/version-2")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
public class myObject{
}
мой маршаллинг работает идеально, когда я использую этот статический механизм пространств имен, но в моей реальной ситуации мне нужно, чтобы эта версия динамически изменялась..
Я пытался использовать этот подход для решения этой проблемы, когда маршаллинг
XMLStreamWriter xmlStreamWriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(stringWriter);
String uri = "http://myhost.com/ver-"+version;
//xmlStreamWriter.setDefaultNamespace(uri);
xmlStreamWriter.writeStartDocument("1.0");
xmlStreamWriter.writeNamespace("ns1", uri);
моя попытка использовать setDefaultNamespace не удалась, и writeNamespace выдает мне сообщение об ошибке Недопустимое состояние: начальный тег не открывается приwriteNamespace
Любая информация о том, как это можно решить, высоко ценится.