我有根对象 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;
当我编码(marshal)这个对象时。 ConsignmentRequest 的对象标签默认设置为“ConsignmentRequest”,但我希望它正是“Request”。 给我一些建议。谢谢 。 这个 xml 结果:
最佳答案
有同样的问题。正如我发现的,JAXBElement 不会查看 @XmlElementRef 注释中的名称。它会查找您传递给其构造函数的 QName。就我而言,是
new JAXBElement<>(someService.getServiceName(), Some.class, someInstance)
我将该代码更改为下面的行并得到了我想要的:
new JAXBElement<>(new QName("MyElementName"), Some.class, someInstance)
关于java - 使用 JAXB 的编码对象不正确的标签名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41390664/