Ich habe eine Situation, in der ich meine Namespaces dynamisch für meine Jaxb-Klassen einrichten muss. Mein Namespace in Jaxb-Klassen hat eine Version, die dynamisch geändert werden muss.Namespace von Objekten dynamisch in jaxb Marshalling setzen
@XmlRootElement(name = "myobject",namespace="http://myhost.com/version-2")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType
public class myObject{
}
meine Rangierung perfekt funktioniert, wenn ich diesen statischen Namespacing Mechanismus verwenden, aber in meiner realen Situation, ich brauche diese Version dynamisch geändert werden ..
habe ich versucht, diesen Ansatz, um dieses Problem zu lösen, wenn
RangierXMLStreamWriter xmlStreamWriter =
XMLOutputFactory.newInstance().createXMLStreamWriter(stringWriter);
String uri = "http://myhost.com/ver-"+version;
//xmlStreamWriter.setDefaultNamespace(uri);
xmlStreamWriter.writeStartDocument("1.0");
xmlStreamWriter.writeNamespace("ns1", uri);
mein Versuch setDefaultNamespace zu verwenden war nicht erfolgreich und writeNamespace mir einen ungültigen Status Fehler werfen: tag beginnen bei writeNamespace nicht geöffnet
Jede Eingabe, wie dies gelöst werden kann, wird sehr geschätzt.
Werfen Sie einen Blick auf http://stackoverflow.com/questions/277502/jaxb-how- to-ignore-namespace-when-unmarshalling-xml-document Es gibt einige Beispiele dafür, wie Payload im laufenden Betrieb manipuliert werden kann. – Osw