Java JAXB编组为根元素动态提供名称空间

Java JAXB编组为根元素动态提供名称空间,java,xml,jaxb,Java,Xml,Jaxb,在使用jaxb(jaxb 2.1.10-JDK 6)进行编组时,我必须动态地传递根元素的名称空间。我将使用genratedxml调用不同的webservices,这些webservices使用不同的名称空间但输入相同的xml。 这是我的示例jaxb注释类……请用您的宝贵输入指导我 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "taskName", "taskType" }) @Xm

在使用jaxb(jaxb 2.1.10-JDK 6)进行编组时,我必须动态地传递根元素的名称空间。我将使用genratedxml调用不同的webservices,这些webservices使用不同的名称空间但输入相同的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”需要以不同的值动态传递。

您可以将根对象包装在
JAXBElement
的实例中,以提供备用名称和命名空间信息。

感谢您的输入。现在,在jaxb中QName元素的帮助下,我能够动态地传递名称空间。只需使用相同marshaller.marshall(新的JAXBElement(新的QName(ns,“TaskRequest”)、TaskRequest.class、request)、System.out)的示例代码进行更新;