Xstream 映射 XML 的“选择”元素

2024-01-10

我需要使用 XStream 将受 XSD 约束的 XML 映射到 Java 对象。 XSD 有 4 个复杂类型元素,它们是“选择”元素,即这 4 个元素之一可以出现在根标记下的 XML 中。

我一直在研究 XStream,但在我看来,要映射这样的 XML,我需要 8 个类。如何?这里是...

举例来说,我的根元素是 VEHICLE,XML 中的每个复杂类型是 a) CAR b) BIKE c) TRUCK d) TRACTOR。它们每个都有不同的属性。为了将其映射到 Xstream 并使 XML(由 XStream 生成)兼容 XSD,我们需要 8 个类,即:车辆汽车包装纸->(有一个)Car, 车辆卡车包装->(有一个)Truck, 车辆自行车包装纸->(有一个)Bike and 车辆拖拉机包装机->(有一个)Tractor.

除了破旧的解决方案之外,还有人有建议吗? Xstream 中有没有办法映射 XML 根的此类“选择”元素?因此,所有 4 个实体(即卡车、汽车、自行车、拖拉机)都可以作为关联实体进入 Wrapper,但 XStream 始终忽略除一个关联之外的所有关联,从而创建符合 XSD 的 XML。

希望我的问题很清楚。

非常感谢!


这是解决方案:

车辆类别:

公共类车辆{ @XStreamAlias(“车辆属性”) 字符串车辆属性;

}

汽车类别:

@XStreamAlias("car")
public class Car extends Vehicle {
    @XStreamAlias("carattribute")
    String carAttribute;
}

自行车类:

@XStreamAlias("bike")
public class Bike extends Vehicle {
    @XStreamAlias("vehicleattribute")
    String bikeAttribute;
}

然后是一些XStream配置:

    XStream xstream = new XStream();
    xstream.processAnnotations(Car.class);
    xstream.processAnnotations(Bike.class);
    xstream.processAnnotations(Vehicle.class);

创建一些车辆并告诉 XStream 到 XML'em。

    System.out.println(xstream.toXML(v1));
    System.out.println(xstream.toXML(v2));

这是您想要的输出:

<car>
  <carattribute>my car</carattribute>
</car>
<bike>
  <vehicleattribute>my bike</vehicleattribute>
</bike>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xstream 映射 XML 的“选择”元素 的相关文章

  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • Install4j:如何在安装结束时执行命令行 java -jar filename.jar

    在 Intall4j 中 在安装结束时 我只想通过执行如下命令行来初始化某些内容 java jar filename jar 我怎样才能归档这个任务install4j Thanks 将 运行可执行文件或批处理文件 操作添加到 安装屏幕 并设
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • Apache Commons CLI:替代已弃用的 OptionBuilder?

    IntelliJ 显示此示例代码中不推荐使用 OptionBuilderhttp commons apache org proper commons cli usage html http commons apache org proper
  • 不兼容的类型:在 java netbeans 中对象无法转换为 String

    我试图在我的项目中使用对象数组 但出现错误 incompatible types Object cannot be converted to String 在这一行 ST1 new String emt1 emt2 emt3 emt4 现在
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • Blueimp 文件上传在 IE 8 中没有任何反应

    我在一个项目中使用 blueimp 文件上传插件 在使用 IE8 时遇到了一些困难 主要是没有任何反应 我的设置尽可能接近插件演示设置 文件以相同的顺序包含 html 结构仅略有不同 css 相同等 在其他浏览器 ie9 中 一切都按预期工
  • 无法更改 rbenv 全局 ruby​​ 版本

    我最近从 RVM 切换到 rbenv 尽管 rbenv versions 告诉我我有想要切换到的版本 但我似乎无法在 ruby 版本之间切换 这就是我正在做的事情 ruby v ruby 1 8 7 2012 02 08 patchleve
  • 为什么照片应用程序未显示在设备上的文档提供程序扩展中?

    我正在应用程序中选择照片 我已经使用过UIDocumentMenuViewController显示文档提供者的扩展名列表 此列表显示 Dropbox iCloud GoogleDrive 但不显示本机照片应用程序 为什么 我的代码示例 UI
  • 媒体源 Api 不适用于自定义 webm 文件(Chrome 版本 23.0.1271.97 m)

    我指的是对此给出的媒体源 api 演示link http html5 demos appspot com static media source html 它对于给定的测试 webm 文件工作正常 但是当我尝试将文件名更改为自定义 webm
  • 如何调试 spring 集成

    我们对 spring 集成非常满意 除非事情没有按预期工作 那么真的很难找出到底发生了什么 我们使用的是xml配置 有人可以向我指出 spring 集成组件背后的 java 组件以便调试它们 例如 如果我有一个 headerValueRou
  • 我应该如何随机生成异常值?

    我正在生成一个随机数据集 我的数据集是连续的 并且有上限和下限 在某些随机点 我希望我的数据集具有高于和低于限制的异常值 这是我的代码 generated data 12 np random rand 100 630 outlier dat
  • 由不受信任的机构颁发的证书链

    我正在使用curl 终端并发出以下命令 curl anyauth user admin admin https localhost 8000 LATEST search q caesar 我收到以下警报 curl 77 schannel 下
  • Python JSONDecoder 自定义转译null类型

    在 python 中 JSONDecoder 默认将 null 转换为 None 如下所示 我怎样才能将 null gt None 的翻译更改为不同的内容 即 null gt 猫 class json JSONDecoder encodin
  • BigQuery 中的查询命中和自定义维度?

    我正在 BigQuery 中处理 GoogleAnalytics 数据 我想输出 2 列 特定事件操作 点击 和自定义维度 基于会话 所有这一切 都使用标准 SQL 我不知道如何正确地做到这一点 文档也没有帮助 请帮我 这就是我正在尝试的
  • 最长正和子串

    我想知道如何获得序列中最长的正和子序列 例如 我有 6 3 4 4 5 所以最长的正子序列是 3 4 4 事实上 总和是正数 3 我们不能添加 6 和 5 否则它会变成消极的 它可以很容易地在 O N 2 中解决 我认为可能存在更快的东西
  • 为什么我的 Ansible 脚本不使用其最顶层目录归档文件?

    我正在编写一个 Ansible 脚本来根据文件类型 创建前的天数等来归档文件 及其目录结构 为了选择文件类型 我正在使用find命令 然后将所有文件放入列表中 使用set fact模块 之后 我将此列表提供给存档模块archive 但我的问
  • 用数组重载运算符

    我有这个单位 unit Main TIns interface type TIns record private type TInsArray array 0 90 of Integer var FInsArray TInsArray pu
  • URI 中的 HTML 字符出现 WebClient.DownloadFile 404 错误?

    我正在使用 WebClient 类从网站下载文件 但有几个问题 当 URI 的 URI 路径中包含 HTML 字符时 例如http foo com path1 http foo com path1 amp path2 pdf 我收到 404
  • Heroku Repo 大小和 Slug 大小随着每次部署而增加。为什么?

    我更改了应用程序中的一些文本并使用以下命令部署新版本 git push heroku master 但每次我推动时 它都会增加很多 我在这里写下每次部署后的增量 168 2 KB 37 9 MB 178 6 KB 38 7 MB 187 K
  • 如何检查哪些优惠券适用于 WooCommerce 中的哪些产品?

    由于我们可以为订单中的每个产品应用不同的优惠券 有什么方法可以知道哪些优惠券适用于哪些产品 我用过 order gt get used coupons 函数 但它只返回使用过的优惠券代码 请帮忙解决 谢谢 2016 年 6 月为 Wooco
  • Python中有标签/goto吗?

    有没有goto或者 Python 中的任何等效项能够跳转到特定的代码行 不 Python 不支持标签和 goto 它是一种 高度 结构化的编程语言
  • 如何使用 OkHttp/Retrofit 重试 HTTP 请求?

    我在我的 Android 项目中使用 Retrofit OkHttp 1 6 我没有找到任何内置的请求重试机制 在搜索更多内容时 我读到 OkHttp 似乎有静默重试 我没有看到我的任何连接 HTTP 或 HTTPS 上发生这种情况 如何使
  • 如何使水平ScrollView的内容水平居中?

    我有一个水平 ScrollView 其中有一个 HStack 如下所示 ScrollView horizontal HStack Circle frame width 60 height 60 使用此代码 HStack 的内容与屏幕左侧对齐
  • 使用 preg_match 从字符串中获取数字[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个字符串 div 我只想使用此
  • Xstream 映射 XML 的“选择”元素

    我需要使用 XStream 将受 XSD 约束的 XML 映射到 Java 对象 XSD 有 4 个复杂类型元素 它们是 选择 元素 即这 4 个元素之一可以出现在根标记下的 XML 中 我一直在研究 XStream 但在我看来 要映射这样