【发布时间】:2012-04-08 19:54:36
【问题描述】:
我有一种情况,我需要为我的 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 中打开
我们非常感谢任何有关如何解决此问题的意见。
【问题讨论】:
-
看看stackoverflow.com/questions/277502/… 有几个关于如何动态操作有效载荷的示例。
标签: xml xml-serialization jaxb marshalling jaxb2