Tag: jaxb2

XSD有2个根元素(一次1个)

所以这是一个复杂/迟钝的情况。 我正在编写XSD,并且恰好需要2个根元素(在任何给定时间为1) 接着 在任何给定的时间,这些元素中的任何一个都将用作根元素,因此XML看起来就像 XYZ 要么 XYZ 这两个XML都将从2个不同的URL发送回用户,即列表将从localhost / books.xml发送?author = XYZ ,单个book将从localhost / book_name.xml发送 我怎么能用一个xml来实现这个目标? 我尝试将书籍定义放在XSD中,但JAXB2.1没有生成任何Book类。 有什么东西我错过了吗? EDIT1 :已生成BookType但BookType没有任何根元素。

使用JAXB来支持具有微小变化的模式

情况 我需要支持基于模式生成XML文档,这些模式之间只是略有不同。 具体来说,我需要支持的模式基于行业标准,这些标准随着时间的推移会略有变化,供应商可能会制作自己的定制版本。 问题 我打算使用inheritance的JAXB 2(来自Metro)作为解决方案。 我期望包结构最终会像这样: com.company.xml.schema.v1 com.company.xml.schema.v2 com.company.xml.schema.v2.vendorxyz v2包中的类只是扩展v1包中的类并根据需要覆盖。 不幸的是,该计划最终变得不可能,因为子类不能覆盖父类中的注释( 参见此处 )。 例如,如果模式中的属性在版本之间重命名,则v2元素类必须完全重新实现该元素而不从v1inheritance。 据我所知,这让我只有两个选择 选项1 为每个模式类型创建“基础”包,使用@XmlAccessorType(XmlAccessType.NONE)注释该包中的元素类,并删除所有其他注释。 然后,在每个版本化的包中创建类,这些类将“base”包中的相应类子类化,并添加所有必需的注释。 这个解决方案确实给了我一些inheritance领域的帮助,但代码重复是巨大的,维护是一个挑战。 选项2 不要使用JAXB。 我真的不喜欢这个解决方案,因为我也想使用JAX-RS / JAX-WS。 问题 我应该如何使用JAXB来支持具有微小变化的多个模式,而不需要一堆代码重复? 我应该看一下不同的技术组合吗? 编辑 Blaise下面的解决方案非常适用于我们的大部分模式,这些模式只是彼此之间的一个小翻译,通常具有相同的数据。 但是,如果将inheritance与包名称用于版本控制更有意义,我们遇到了一个问题。 例如: com.company.xml.schema.v1.ElementA com.company.xml.schema.v2.ElementA (其中v2.ElementA扩展v1.ElementA) 在这种情况下使用MOXy的OXM会遇到错误,可以在这里找到解决方法(使用Blaise提供的解决方案,不能少!)

使用Mojo Jaxb2 maven插件创建Java类时生成hashCode()和equals()

我正在使用的代码是使用jaxb2-maven-plugin从XSD架构生成Java类。 我正在寻找一种方法来自动为这些类实现equals()和hashCode()方法,但似乎没有办法。 我知道还有其他JAXB2 Maven插件可以做到这一点(例如http://confluence.highsource.org/display/J2B/Home),但我想知道你们之前是否有人遇到过这个问题,如果有办法的话修理它。 我正在使用xjc目标生成类。

我应该在Maven项目中为JAXB RI使用哪些工件?

从历史上看,我总是在我的Maven项目中使用以下JAXB RI工件: com.sun.xml.bind:jaxb-impl – 运行时 com.sun.xml.bind:jaxb-xjc – 模式编译器 com.sun.xml.bind:jaxb-jxc – 模式生成器 由于大约版本2.2.10*这些工件现在被描述为“旧” : com.sun.xml.bind:jaxb-impl 旧的JAXB运行时模块。 所以看起来这些工件现在已经过时了。 问题是: 应该使用哪些工件?