xml - 如何避免编码时 JAXB、MOXY 实现中的类型删除?

标签 xml soap jaxb moxy type-erasure

我必须编码下课;

@XmlRootElement(name = "SYSMessage")
@XmlAccessorType(XmlAccessType.FIELD)
public class Message<T> {

    @XmlPath("Personel")
    private Personel personel;

    @XmlPath("AccountType")
    private T accountType;

    ...

因此,在生产中,我设置了通用帐户类型类,其中包含一些名为“DebitAccount”的对象 我必须使用通用类型,因为 debitAccount 会更改很多次。

Message<DebitAccount> msg = new Msg<>();
DebitAccount dAccount= new DebitAccount();
msg.setAccountType(dAccount);

当我编码 Message 类时,我得到了以下 xml 结果作为帐户类型; ... org.demo.blabla.DebitAccount@123123 ...

在DebitAccount类中;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class DebitAccount{

    @XmlPath("ID")
    private String id;

    @XmlPath("Visa")
    private String visaNo;

我发现这是由于类型删除而发生的。 Moxy 只是无法简单地理解我的对象是 DebitAccount。所以它将对象视为字符串。我怎样才能让 moxy 理解我的复合对象。

最佳答案

您必须使用 @XmlSeeAlso 注释将 DebitAccount 类绑定(bind)到 Message 类的同一 XML 上下文。您可以使用花括号列出多个类。使用泛型类型(T 或?)时,您必须指定哪些类属于同一上下文。

@XmlRootElement(name = "SYSMessage")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({DebitAccount.class})
public class Message<T> { ... }

关于xml - 如何避免编码时 JAXB、MOXY 实现中的类型删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58239042/

相关文章:

php - PayPal 计费协议(protocol)与进一步的非常规引用交易

java - 如何将 XML 请求附加到 SOAP Body 的唯一 SOAPElement 子级?

jaxb - 配置 JAXB unmarshal tp 避免解码 XML 数据

java - 使用 JAXB 解码日期和货币属性时出现意外值

java - Jackson+JAXB 放心

Android:根据宽度在 XML 中设置按钮高度

php - 具有多个包含在不同元素上的 XPath

java - Hibernate无法创建表

c# - 如何选择多个具有相似名称的 XML 子节点

php - WSDL PHP 函数返回 null,而其他函数返回预期结果