現在、次のコードを使用してJAXBオブジェクトを出力ストリームにマーシャリングしています
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
ByteArrayOutputStream out = new ByteArrayOutputStream();
marshaller.marshal(new JAXBElement(new QName("hard_coded_namespace", clazz.getSimpleName()), clazz, obj), out);
「hard_coded_namespace」をJAXB「obj」(またはその属性の1つ、現在は同じNSを共有する必要があります)に含まれる名前空間に置き換えたいと思います。
マーシャリングの前にNS情報を取得する方法について何かアイデアはありますか?出力ストリームに、名前空間が表示されます。したがって、それらは「obj」のどこかにあります。
[更新]以下の回答で指摘されているように、JAXB_FRAGMENTプロパティを設定する必要はありません。私はそれを次のように変更しました:
JAXB.marshal(new JAXBElement<T>(new QName("hard_coded_namespace", rootName), clazz, jaxbObject), out);