java - 排除 JAXB 中的字段

标签 java xml jaxb java-ee-6

我有 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
}

默认情况下,如果我将类 A 的实例转换为 XML,我将拥有它的所有字段 (id) 和引用的 B 类字段(idfield1field2)如下:

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

是否可以修改引用类 B 中的 what 字段包含在 A 类的 XML 中?例如。我想说的是,当我转换 A 类的实例时,我只想从 B 类中获取 id (没有 field1field2 字段),所以我想得到:

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

我不想永久注释 B 类(使用 @XMLTransient@XMLElement)来实现它,因为有我想按原样导出整个 B 类的情况(使用 idfield1field2。)< br/> 当从 A 引用 B 类时,我只是不想导出所有这些字段。

JAX-B 甚至可以做到这一点吗?

最佳答案

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

关于java - 排除 JAXB 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10968522/

相关文章:

java - 如何在 JavaFX 中调用场景最大化(而不是调整大小)函数

Java - 生成接近随机数。 (比java的Random类更好)

xml - xQuery 更改节点层次结构(从一个节点中删除子节点并将其作为兄弟节点返回)

c# - 从 Web 服务读取 XML 节点

java - 如何让 jaxb 在解码期间忽略某些数据

java - JAXB 返回 null 而不是空字符串

java - 有没有办法在 chrome 扩展中加载小程序?

Java 和 JSP - 将 .class 放在首选目录中?

Android Eclipse > 图形布局 : How to Set Default Layout = Nexus 7 or Not 2 for every XML layout I open to look same in IDE and Device

java - 如何删除 xmlns :xsi and xsi:type from JAXB marshalled XML file