问题标签 [oxm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
59 浏览

xml - MOXy 在瞬态成员/属性上显示错误“多个可映射父接口”

我正在使用外部映射文件来定义我的对象的编组。我的测试应用程序(link@bottom)有这个class_model.png:3 个类ContactRelationCountry,它们都实现了自己的接口IContactIRelationICountry。这 3 个接口扩展了多个超级接口。这 3 个类是相关的:Contact类有一个IRelation成员,Relation类有一个ICountry成员。

为了避免错误“ JAXB 无法映射 java 接口,因为它有多个可映射的父接口”,我在我的映射文件中将 3 个接口超级键入到 java.lang.Object,正如 Blaise Doughan 在他的博客中所描述的那样。

我想在类Relation中隐藏Country的编组,所以我在Relation中为 country 成员添加了一个xml-transient元素。

由于xml-transient ,该国家没有编组。所以我猜 MOXy 不处理Country,所以我不再需要ICountry的超类型。当我从映射中删除ICountry *super-type* 时,我收到错误消息“Java 接口 ICountry 无法由 JAXB 映射,因为它有多个可映射的父接口。” 再次在创建 JAXBContext 的过程中。

为什么在MOXy 由于xml-transient未处理Country对象时出现此错误?

我有一个大型域模型/对象树(300 个域,80 个包),其中每个域都实现了一个具有多个超级接口的接口。我预计我可以通过使用xml-transient元素来编组对象树的子集。但似乎 MOXy 需要为对象树中的每个接口提供一个超类型,即使该接口是由未编组的类实现的。因为 OXM 映射是基于包的,这意味着我必须为所有接口包含 80 个映射文件才能创建有效的 JAXBContext。

应该如何定义我的映射文件,以便 MOXy 不检查任何从编组过程中排除的接口/类?我如何编组一个巨大的对象树的子集,而不需要每个接口都被超级类型化?

非常感谢任何帮助。

包含更多信息的链接: 链接到test_app.zip,它演示了具有不同映射文件的多个单元测试中的行为。

0 投票
1 回答
2848 浏览

spring - org.springframework.oxm.UnmarshallingFailureException:JAXB 解组异常意外元素(uri:“”,本地:“html”)

另一个我花了 3 个小时试图修复以下错误,但在这里我找不到答案,所以现在我找到了答案,我决定与你分享。

我正在使用 Java 6、Spring MVC、JAXB,当我创建一个新的 web 服务时,我收到了这个错误:

0 投票
1 回答
54 浏览

java - OXM:映射变量元素名称

从传统的自由式 Web 服务,我收到以下类型的数据:

元素名称事先key1, key2, ...知道,可以是任何标识符,因此这在 XSD 中不容易表达,除了any在 JAXB 中不能直接映射。

是否有可能,使用任何 JAXB 扩展,以某种方式将其映射到

我试过 MOXy 的@XPath,但找不到合适的 XPath 表达式。

欢迎任何解决方案,它不必是 MOXy。

0 投票
1 回答
4426 浏览

spring - Spring OXM 中的“上下文路径”错误

我有一个 Grails 项目,它有一个依赖项,这是我的另一个项目,它使用spring-oxm. 我的 Grails 项目可以成功地<import resource="some.xml">找到位于 .jar 内的 .xml,但它显示此错误:

我对我的 Grails BuildConfig.groovy 有这种依赖:

以及对我的其他(Maven)项目的依赖:

以下是我为 oxm-marshaller 创建 bean 的方式:

此外,每当我运行 Maven 项目的测试时,spring 应用程序上下文都会完美加载,这就是为什么我确信它可以独立工作的原因。

这里有什么问题?我在两个项目中都使用了相同的 spring-oxm 依赖项,为什么我仍然会遇到这些错误?需要帮忙!

编辑:快速解决方法......我没有将我的 Maven 项目作为依赖项导入,而是尝试将我的 Maven 项目中的所有代码复制粘贴到 Grails 项目中,它工作得很好......仍然想知道出了什么问题这里 :(

编辑 2:我尝试以不同的方式创建 bean……我没有创建 Spring bean 本身,而是使用了 oxm 命名空间。当我在我的 Maven 项目中创建编组器时,它看起来像这样:

有趣的是,在我的 Grails 项目(我之前复制粘贴的那个)中,它看起来像这样:

注意 contextPath 属性的 camelCase 约定。为什么会这样?

0 投票
1 回答
232 浏览

java - 同一个 Java 对象上的不同 XML 映射/绑定

我有一个可与其他几个信息系统互操作的 Java 应用程序

根据目标信息系统,同一个对象可以映射到不同的 XML 文件中

我的问题是:是否有 Java 解决方案可以在同一个对象上执行多个 XML 映射/绑定

类似于 Bean Validation 组的东西,可以使用不同的验证配置文件验证对象

在 JAXB 样式中,它可能是这样的,例如:

接着

可能有可能用 JAXB 做这样的事情,但我不知道


编辑

@Martin Serrano 的回复为我提供了一些使用 JAXB 优化事物的线索。

一个抽象类来统治它们:

并具体化进行映射的类:

默认映射的类Person

和其他用于替代映射的类:

并测试:

因此 :

我发现最好的解决方案是具有不同的映射并避免代码重复,因此我们只需使用映射实现 getter。

让我们看看它是否在解决更大的问题!

但是虽然它比拥有 3 个不同的类要好得多,但它仍然不是同一个类上的 3 个映射......

0 投票
0 回答
462 浏览

spring - Java jaxb 封送处理异常处理

我正在使用 jaxb 封送处理来验证带有 xsd 的 xml...我正在处理 2 GB 的记录。

我在某个时间点收到 xsd 验证异常......当我处理较少量的数据时,我可以轻松确定数据出错的地方。

但如果它的数据量很大,那就很难了。有人可以就这个问题向我提出一些想法。

0 投票
1 回答
1948 浏览

java - jaxb:枚举列表上的奇怪类强制转换异常

我正在使用jaxbxsd文件生成 java 类。xsd包含一个元素的定义,其内容是与枚举定义相同的常量列表xsd

当使用来自 oracle jdk1.7( v2.2.4-2) 的 JAXB 参考实现生成类时,可以遍历枚举列表并为它们分配相同类型的变量。

但是,当使用 oracle 的jdk1.8(构建1.8.0_45-b15- 发布日期最新)JAXB 参考实现(v2.2.8-b130911.1802)生成类时,不再可能将列表的元素分配给枚举类型的变量。

任何使用增强的 for 循环分配或迭代的尝试都以ClassCastException

在这两种情况下,列表本身都使用正确的枚举类型参数化。

这是重现上述问题的代码:

XSD 文件

测试 XML 文件

测试阅读器

输出jdk1.7

输出jdk1.8

从上面的输出可以清楚地看出,该类型的元素java.lang.String被偷运到列表中List<GConstNameType>,或者String设置了 s 的列表而不是GConstNameTypes 列表。无论如何,Stringxml文件中的枚举名称都没有映射到java枚举常量。

java 运行时在这两种情况下都是相同的,它jre来自jdk1.8.

用于生成的命令:

  • 这怎么可能/这里发生了什么?
  • 上面显示的模式定义对于定义枚举是否不正确?
  • 如何解决这个问题而不必使用XmlAdapter(一种适用于每个 jdk 版本的方法)?

编辑

两个生成的包之间的唯一代码差异

两个生成的包之间的唯一代码差异

删除注释

使jdk1.8生成的代码完全正常工作。

  • 为什么较新的JAXB实现将枚举映射到anySimpleType
0 投票
1 回答
627 浏览

spring - 使用映射的 Spring Castor 解组

我正在尝试在 Spring 中使用 Castor OXM Unmarshalling 将 XML 解组为对象。

我收到以下错误:

我已经尝试了几种方法并花费了足够的时间,现在我需要大家的帮助。

任何帮助都会很有用。

0 投票
0 回答
51 浏览

spring - 构建 Spring-Framework 4.2.6 后,castor,jaxb,xmlbeans 错过了 spring-oxm 的程序下面

一切都找到了,但三个文件:castor、jaxb 和 xmlbeans。(错过)它们如下所示: 三个文件丢失

比我尝试下载罐子。显然不行 发布超过2个链接至少需要10个声望..所以..我在构建路径中导入三个jar的图片,无法上传..三个jar是castor.jar,jaxb.jar和xmlbeans我从 jarfire.com 下载的 .jar。比下面的错误 在此处输入图像描述

我试图在中国互联网上弄清楚,但没有这样的信息可以帮助我。任何人都可以帮助我。

0 投票
0 回答
114 浏览

spring - 使用 JAXB/Spring OXM 解组 XML 时出错

我正在尝试使用 xjc 将 xsd 转换为 Java 对象。生成类。但是,当我尝试使用 spring OXM 将示例 xml 文件解组为 java 对象时,它失败并出现以下错误。

有人可以指出我做错了什么。