【问题标题】:JAXB Marshalling supply name space for root element dynamicallyJAXB Marshalling 动态地为根元素提供名称空间
【发布时间】:2013-11-09 09:50:06
【问题描述】:

在使用 jaxb(JAXB 2.1.10 - JDK 6)编组时,我必须动态传递根元素的命名空间。我将使用生成的 xml 来调用不同的 web 服务,这些 web 服务具有不同的命名空间但相同的输入 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”需要动态传递不同的值。

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:

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

    【讨论】:

    • 感谢您的意见。现在我可以借助 jaxb 中的 QName 元素动态传递命名空间。只是使用相同 marshaller.marshal(new JAXBElement(new QName(ns,"TaskRequest"), TaskRequest.class, request), System.out) 的示例代码进行更新;
    猜你喜欢
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多