java - 使用 JAXB 的编码对象不正确的标签名称

标签 java xml soap jaxb marshalling

我有根对象 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 结果: enter image description here

最佳答案

有同样的问题。正如我发现的,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/

相关文章:

ios - XML 到对象 Objective-C

rest - 通过 SOAP 访问 REST 服务

php - 多个 NuSOAP 客户端导致 "Undefined index: _transient"错误

java - 如何为不同的 Zookeeper Docker 容器设置不同的管理端口?

java - Java 中的递归函数不向 ArrayList 添加项目

java - 我编写了一个在循环中随机生成 0 和 1 的程序。如何使程序在连续生成十个 0 时停止循环?

c++ - 搜索文件的特定位置

xml - 如何使用 SED (linux) 从 XML 文件中删除 CDATA

java - 使用 Java 从无效的 SOAP 1.1 消息中获取值(value)

java - Java 8 中使用数组流计算单词出现次数