JAXB序列化动态为根元素提供命名空间

3

在使用jaxb(JAXB 2.1.10 - JDK 6)进行编组时,我必须动态传递根元素的命名空间。我将使用生成的xml来调用不同的webservice,这些webservice具有不同的命名空间但相同的输入xml。下面是我的示例jaxb注释类......请用您宝贵的建议指导我。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "taskName",
    "taskType"
})
@XmlRootElement(name = "TaskRequest", namespace = "ABC")
public class TaskRequest {

@XmlElement(name = "TaskName", required = true, namespace = "XYZ")
protected String taskName;
@XmlElement(name = "TaskType", required = true, namespace = "XYZ")
protected String taskType;

public String getTaskName() {
    return taskName;
}

public void setTaskName(String value) {
    this.taskName = value;
}

public String getTaskType() {
    return taskType;
}

public void setTaskType(String value) {
    this.taskType = value;
}

需要动态传递不同的值来命名空间 "ABC"。

1个回答

2

您可以使用JAXBElement实例来包装根对象,以提供替代的名称和命名空间信息。


1
感谢您的输入。现在我能够通过JAXB中的QName元素动态地传递命名空间。以下是相应示例代码:marshaller.marshal(new JAXBElement(new QName(ns,"TaskRequest"), TaskRequest.class, request), System.out); - Venkat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接