当前位置: 首页 > 知识库问答 >
问题:

JAXB -复合模式和@XmlValue

向泽语
2023-03-14

继JAXB和复合模式之后,我设法映射:

<precondition>
    <or>
        <and>
            <just><query>foo</query></just>
            <just><query>bar</query></just>
        </and>
        <just><query>baz</query></just>
    </or>
</precondition>

但我想绘制:

<precondition>
    <or>
        <and>
            <query>foo</query>
            <query>bar</query>
        </and>
        <query>baz</query>
    </or>
</precondition>

我的JAXB类层次结构如下:

@XmlRootElement
@XmlSeeAlso({SimplePreconditionQuery.class, CompoundAndPreconditionQuery.class, CompoundOrPreconditionQuery.class})
public abstract class PreconditionQuery {
    // JAXB does not deal with interfaces by default >:(
}

有几种类型的查询:

@XmlSeeAlso(PreconditionQuery.class)
@XmlRootElement(name = "just")
public class SimplePreconditionQuery extends PreconditionQuery {

    private String query;

    @XmlElement(name = "query")
    public String getQuery() {
        return query;
    }

    public void setQuery(String query) {
        this.query = query;
    }
}

复合词(和/或)非常相似:

@XmlSeeAlso(PreconditionQuery.class)
@XmlRootElement(name = "and")
public class CompoundAndPreconditionQuery extends PreconditionQuery {

    private Collection<PreconditionQuery> preconditionQueries = newArrayList();

    @XmlElementRef(name = "query")
    public Collection<PreconditionQuery> getPreconditionQueries() {
        return preconditionQueries;
    }

    public void setPreconditionQueries(Collection<PreconditionQuery> preconditionQueries) {
        this.preconditionQueries = preconditionQueries;
    }
}

和封闭bean:

public class Precondition {

    private PreconditionQuery query;

    @XmlElementRef(required = true)
    public PreconditionQuery getQuery() {
        return query;
    }

    public void setQuery(PreconditionQuery query) {
        this.query = query;
    }
}

JAXB不允许我只在SimplePreoditionQuery上映射@XmlValue。为什么以及有什么替代方案?

暂时还没有答案

 类似资料:
  • 我现在正在使用JAXB,我正在努力注释我的前置条件查询的复合概念,以便JAXB会满意。 前提条件查询可以是: 简单:只有一个包含查询的文本节点 化合物 OR:1个前置条件查询的前置条件OR其他匹配 AND:1个前置条件查询的前置条件与其他匹配 当然,复合查询可以由复合查询组成,就像下面的例子一样: 在我的Java模型中,我有一个带注释的接口PreconditionQuery(实际上是一个抽象类,因

  • 复合模式用于需要以与单个对象类似的方式处理一组对象的位置。 复合模式根据树结构组成对象,以表示部分以及整个层次结构。 这种类型的设计模式属于结构模式,因为此模式创建了一组对象的树结构。 此模式创建一个包含其自己的对象组的类。 此类提供了修改其相同对象组的方法。 我们通过以下示例演示复合模式的使用,其中我们将显示组织的员工层次结构。 实现 (Implementation) 我们有一个Employee

  • 我正在尝试创建一个可以同时包含元素和值的java/jaxb类。 我想在A类的列表中读取一个类的属性,并作为A类本身的值输出。 这是XML: 我必须阅读: 并生产: 这是我的错误类-工作正常: 我的设备类别: Jaxb 抱怨我不能在同一类中同时拥有 xml 元素(错误 )和 xml 值 如何正确建模/注释此内容,以允许我读取 error xml 标记的属性并将其生成为设备标记的值?

  • 问题内容: 我必须设计一个数据模型(在Java EE 6应用程序中),该数据模型将通过JPA持久化,并且还需要通过JAXB进行序列化。上一次,我有一组带有JAXB批注的实体类,另一组带有JPA批注的实体类。这意味着我必须有很多样板代码才能在两者之间进行翻译。我正在考虑将它们组合在一起,以便每个类都具有两种类型的注释。我知道 可以 做到,但是我的问题是, 应该 吗?会引起什么问题吗? 问题答案: 这

  • 练习题问题: 下面是命令设计模式在游戏中的一个可能的实现,例如Pacman。在这个特定版本的PacMan游戏中,用户可以发出命令,在四个方向(右、左、上、下)中的任何一个方向移动PacMan。还有一个单独的命令用于攻击碰巧在同一位置的其他演员,比如幽灵。所有命令的接收器是PACMAN(未示出)。 现在要求您实现一个允许用户定义宏的新需求,即可以作为一个命令执行的命令组合。以下是这类宏命令的三个示例

  • 复合实体模式用于EJB持久性机制。 Composite实体是EJB实体bean,表示对象图。 更新复合实体时,内部相关对象bean会自动更新为EJB实体bean管理。 以下是Composite Entity Bean的参与者。 Composite Entity - 它是主要的实体bean。 它可以是粗粒度的,也可以包含粗粒度的对象以用于持久性目的。 Coarse-Grained Object -