使用JAXB错误标记名称的Marshal对象

时间:2016-12-30 04:33:09

标签: java xml soap jaxb marshalling

我有Root对象ProcessConsignmentRequest

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "ProcessConsignmentRequest", propOrder = {
    "request"
    })
    @XmlRootElement(name = "ProcessConsignmentRequest", namespace ="http://tempuri.org/")
public class ProcessConsignmentRequest {{
@XmlElementRef(name = "Request", namespace = "http://tempuri.org/", type = JAXBElement.class, required = false)
protected JAXBElement<ConsignmentRequest> request;

当我编造这个物体时。 ConsignmentRequest的object&#39;标签默认设置为&#34; ConsignmentRequest&#34;但我希望它确实是&#34;请求&#34;。 给我一些建议。谢谢 。 这个xml结果: enter image description here

1 个答案:

答案 0 :(得分:0)

有同样的问题。正如我发现的那样,JAXBElement不会在@XmlElementRef注释中查找名称。它查看您传递给它的构造函数的QName。就我而言,它是

new JAXBElement<>(someService.getServiceName(), Some.class, someInstance)

我将该代码更改为下面的行并获得了我想要的内容:

new JAXBElement<>(new QName("MyElementName"), Some.class, someInstance)