排除 JAXB 中的字段

2022-08-31 22:38:50

我有2个班级:

@XmlRootElement
public class A {

    private Long id;
    private B b;

    // setters and getters
}

@XmlRootElement
public class B {

    private Long id;
    private String field1;
    private String field2;

    // setters and getters
}

默认情况下,如果我将类的实例转换为 XML,我将拥有其所有字段 () 和引用的类字段 (, , ),如下所示:AidBidfield1field2

<a>
    <id>2</id>
    <b>
        <id>5</id>
        <field1>test1</field1>
        <field2>test3</field2>
    </b>
</a>

是否可以修改引用类中的哪些字段包含在类的 XML 中?例如,我想说的是,当我转换类的实例时,我只想从类中获取(no和字段),所以我想得到:BAAidBfield1field2

<a>
    <id>2</id>
    <b>
        <id>5</id>
    </b>
</a>

我不想永久地注释类(使用或)来实现它,因为在某些情况下,我想按原样导出整个类(使用,和.
我只是不想在从中引用类时导出所有这些字段。B@XMLTransient@XMLElementBidfield1field2BA

这对于 JAX-B 是否可能实现?


答案 1

您可以使用批注来忽略字段。将此注释放在字段本身或其 getter 上。@XmlTransient


答案 2

您可以在现场使用@XmlTransient。此外,可以使用定制绑定声明在全局范围内或根据需要逐个重写缺省 JAXB 绑定。

查看 Baeldung 网站上的 JAXB 指南,了解更多示例。


推荐