我有一种情况,我需要为我的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