JAXB2:将嵌套元素映射到同一个 Java 类中

2023-11-26

我在尝试将嵌套元素映射到同一个 Java 类时遇到问题。

XML

我在这里想做的是设置id属性和text元素进入SlideText class.

<module name="test project">
    <slide id="1">
        <layout>
            <text>hello</text>
        </layout>
    </slide>
</module>

模块类

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Module {
    @XmlAttribute
    private String  name;

    @XmlElements({
        @XmlElement(name = "slide", type = SlideText.class)
    })
    private Slide   slide;
}

幻灯片课

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public abstract class Slide {
    @XmlAttribute
    private String  id;
}

幻灯片文本类

我尝试使用@XmlElementWrapper on text财产,但我得到一个例外@XmlElementWrapper只能应用于集合。

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SlideText extends Slide {

    // how to map this to layout/text elements?
    private String  text;
}

有没有办法映射<layout><text>hello</text></layout> into SlideText's text财产?

Thanks.

UPDATE

为了说明我在这里想要完成的任务,幻灯片可以是任何类型,具体取决于所使用的布局。 Amodule知道这是一个slide但它不知道它是什么幻灯片,这就是为什么我有摘要Slide class.

本质上,如果这有效,我将创建SlideImage and SlideTextVideo延伸Slide.

实际的 XML 文件如下所示:-

<module name="test project">
    <slide id="1">
        <layout-text>
            <text>hello</text>
        </layout-text>
    </slide>
</module>
<module name="test project">
    <slide id="2">
        <layout-image>
            <image-path>img.jpg</image-path>
        </layout-image>
    </slide>
</module>
<module name="test project">
    <slide id="3">
        <layout-text-video>
            <text>hello</text>
            <video-path>a.mp4</video-path>
        </layout-text-video>
    </slide>
</module>

如果你使用EclipseLink JAXB (MOXy)那么您可以为此利用 @XmlPath 扩展(我是 MOXy 技术负责人):

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SlideText extends Slide {

    @XmlPath("layout/text/text()")
    private String  text;

}
  • http://bdoughan.blogspot.com/2010/09/xpath-based-mapping-geocode-example.html

使用标准 JAXB,您可以利用 XmlAdapter:

  • http://bdoughan.blogspot.com/2010/07/xmladapter-jaxbs-secret-weapon.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAXB2:将嵌套元素映射到同一个 Java 类中 的相关文章

  • Junit4 + Spring 2.5:断言抛出“NoClassDefFoundError”

    我一直在使用 Spring 在 Junit4 中编写测试代码 并且得到了这个有趣的行为 如果我的测试像这样通过 那么一切都很好 Test public void truthTest assertTrue true Ok 但是 如果我的测试失
  • 是否可以同时读取和写入 java.net.Socket?

    是否可以同时从套接字读取和写入 我有一个连续读取套接字的线程 由于只有一个线程正在从套接字读取数据 因此读取操作是线程安全的 现在我有很多线程 比如100 写入套接字 因此 很明显 我必须通过这样做来使写操作线程安全 package com
  • 范围内的春季活动可能吗?

    Spring 事件机制支持发布应用程序事件并通过 Spring 组件监听这些事件 EventListener注解 但是 我在 中找不到有关在特定范围内发送事件的任何信息文档 https docs spring io spring docs
  • 如何在gradle中执行jar文件?

    当我使用 ant 构建我的 android 项目时 我需要这样的任务
  • 合并两个 Jasper 报告

    我有一个带有下拉菜单的网络应用程序 用户可以从中选择报告可视化的类型 报告 1 报告 2 报告 3 等 根据所选的报告 Jasper 报告将在服务器上编译并以 PDF 格式的弹出窗口打开 在服务器端 我使用下面的代码以单独的方法实现每个报告
  • 什么 RoundingMode 常量 100% 与 Math.round 一样工作?

    我的意思是有没有舍入模式 https docs oracle com javase 8 docs api java math RoundingMode html常数准确地描述了什么Math round arg 做 据我所知 Math rou
  • 如何在 Java 中从任意基数转换为基数 10

    我是 Java 新手 我想编写一个程序 仅使用算术运算将基数 2 3 4 5 6 7 8 9 16 转换为基数 10 我已经完成了从键盘读取字符串 如果数字是十六进制 并将其转换为整数 之后我做了一个 while 循环 将数字分割为数字并将
  • Java中如何存储profile?

    我仍在学习 Java 的诀窍 如果有一个明显的答案 我很抱歉 我有一个占用大量内存的程序 我想找到一种方法来减少其使用 但是在阅读了许多 SO 问题后 我认为在开始优化它之前我需要证明问题出在哪里 这就是我所做的 我在程序的开头添加了一个断
  • 在使用 Selenium 和 java 时在网格中应用过滤器后无法选择第一行[棘手的情况]

    我遇到了这种奇怪的情况 找了好久都没有成功 请问这是怎么回事 让我给你解释一下 我正在尝试在网页中创建自动化 我必须输入 动态表中的特定值以及执行 ENTER 事件后 需要选择显示的第一行 运行我的代码后 我得到了这个 但显示的行未被选择
  • 使用 Spring RestTemplate 时忽略 SSL 证书验证

    我正在使用 Spring RestTemplate 发出 HTTPS 请求 并且我想忽略 SSL 证书 这是我创建restTemplate请求的代码 TrustStrategy acceptingTrustStrategy X509Cert
  • 将 PFX 文件导入现有 JKS 文件(不从 .pfx 转换为 .jks)

    我有 Java Web 服务 并使用 Java Keytool 创建的 jks 文件实现了 X 509 keytool genkey keyalg RSA sigalg SHA1withRSA validity 730 alias myse
  • 用于查看算法花费多长时间的计时器表示我的二分搜索比线性搜索花费的时间更长

    这是要点课程https gist github com 2605302 https gist github com 2605302 我已经用不同的文件对其进行了多次测试 即使二分搜索进行的比较较少 所花费的时间也总是更多 出了什么问题 pu
  • Axis2 不返回自己的对象

    我编写了一些网络服务 其中一些返回一个简单的字符串 这个可以工作 另一些返回一个对象列表 不 axis2 1 5 1 无法处理集合类型 所以我将返回类型更改为Object 但我仍然收到这个异常 ERROR java lang Runtime
  • 基本的 Swing 库? JGoodies,JFreeChart [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Hibernate添加带有子实体id的实体

    我的对象 状态 java Entity Table name STATE public class State Id GeneratedValue strategy GenerationType AUTO private Long id C
  • 如何模拟类路径上属性文件的存在?

    这肯定是一个常见问题 我有一个像这样的属性文件my settings properties由应用程序类读取 当我编写测试类时 它需要测试可能存在的不同场景my settings properties为了确保最大的代码覆盖率 例如空属性文件
  • JAXB 将不需要的命名空间声明附加到标签

    我正在实现 XMPP 的自制子协议 并且使用 StAX 和 JAXB 的组合来解析 编组消息 当我整理一条消息时 我最终会得到大量不需要的命名空间声明
  • 使用三十、LocalDate 获取每月的第一天和最后一天

    我有一个 LocalDate 需要获取该月的第一天和最后一天 我怎么做 eg 13 2 2014我需要得到1 2 2014 and 28 2 2014 in 本地日期 https docs oracle com javase 8 docs
  • Android:从http获取文件并存储在SDCard中

    我已经遵循了许多类似问题中所写的内容 但仍然存在问题 从jsp我得到一个pdf 如果我转到URL 浏览器会自动打开pdf jsp页面会执行类似以下操作 Gets the pdf from the database BufferedInput
  • 多个事件分派线程

    我是 Java Swing 新手 我的问题与事件队列和调度线程相关 我读到可以有多个事件队列 每个队列应用上下文 http www java2s com Open Source Java Document 6 0 JDK Modules s

随机推荐