【问题标题】:Marshal object using JAXB incorrect Tag name使用 JAXB 错误标记名称的 Marshal 对象
【发布时间】:2017-05-14 10:13:14
【问题描述】:

我有根对象 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'tag 默认设置为“ConsignmentRequest”,但我希望它完全是“Request”。 给我一些建议。谢谢 。 这个xml结果:

【问题讨论】:

    标签: java xml soap jaxb marshalling


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-18
      • 2018-09-29
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多