我有一種情況,我需要爲我的jaxb類動態地設置我的名稱空間。我的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
打開關於如何解決這個問題的任何意見都非常感謝。
看一看http://stackoverflow.com/questions/277502/jaxb-how- to-ignore-namespace-during-unmarshalling-xml-document有幾個例子說明如何在運行中處理有效載荷。 – Osw 2012-03-25 06:16:25