问题标签 [jaxb2]

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 投票
1 回答
840 浏览

arrays - jaxb2Marshaller 将 XML 解组为一个空字节数组

这就是问题所在。我正在使用 Spring 3.0.4 创建一个 rest web 服务(实际上我是一个新手)。我想通过客户端作为 XML 表示形式传递的休眠来持久化一个对象。为了完成这个任务,我使用了 jaxb2。

客户端发送的对象是一个具有两个子对象的节点,即数据和元数据。

问题在于,当客户端发送其 XML 时,SIUserData 被解组为一个不可预测的 byte[] 数组:有时输入的一部分被切除,有时它只是空的。

例如这个输入

在具有空 StorageInterfaceData 内容属性的对象中解组。

我相信这个问题会影响 byte[] 的处理,因为我尝试在 String 结尾更改 StorageInterfaceData 内容属性的类型,一切正常:S。

它遵循代码。

节点

数据

散装对象

省略元数据类以免过于冗长。有人可以澄清一下吗?

0 投票
1 回答
614 浏览

xml - @XmlElementWrapper 生成 NullPointerException

大家好,我想代表以下 xml 代码:

我想使用@XmlElementWrapper 注释来做到这一点。

这是我使用它的类:

这是 SimpleLink 类

最后是 Link 类

当我使用 Jaxb2 解组与我上面写的类似的 xml 时,问题就出现了:我得到一个 NullPointerException :-(。我读到 jaxb 中有一个关于这个事实的错误,但它在 2006 年得到了解决,我正在使用 spring 3(用他自己的jaxb2库)。

有人有线索吗?

0 投票
1 回答
457 浏览

xml - JAXB2 将 xsd:restrictions 映射为子类和 (un)marshall xsi:types

我一直在做很多研究试图弄清楚这一点,但仍然没有成功。

我有许多遵循此架构的 XSD:

Simple_Identification.xsd

例如Simple_S.xsd如下所示:

最终,我希望能够生成包含如下标签的 XML 文件:

现在,在不启用 mapSimpleTypeDef 的情况下,我能够编组/解组 XML 文件,而忽略 Simple_S 等简单类型。

启用 mapSimpleTypeDef 后,将为简单类型生成类。Simple_Identification 映射到包含 Base_3039 字段的类。Base_3039 类包含一个字符串字段。但是,Simple_Identifications 的不同子类型的类不扩展 Simple_Identification,而仅包含 Simple_Identification 类型的字段,这在编组/解组时没有帮助。

例如,在解组此 XML 文件时:

Identity 的值被解组为 Simple_Identification 对象,而不是专门的 Simple_S 对象。此外,如果我重新编组所有 xsi:type 属性在生成的 XML 中丢失。

所以,基本上,我的问题是如何正确解组并生成包含 xsi:types 的 XML。我正在使用的模式是否不适合这样做?xsd:restriction 不被 JAXB 解释为一种继承吗?

请注意,XSD 不是我要修改的,我只需要使用它们来正确读取和生成 XML。

感谢您花时间帮我解决这个问题!

-安卡

0 投票
2 回答
2577 浏览

java - 用@XmlJavaTypeAdapters 标记的@XmlElements?

我有这种情况

因此,复合是简单和/或复合的列表。两者都从定义为的值扩展

Simple 是一个标有适配器的类,用于编组/解组到/从简单字符串

Compound 不需要适配器。

问题是,如果我使用简单的“原样”,它会正确地编组/解组为

但是如果我在 Compound 中使用它,它会输出类似

我只是想知道为什么...我错过了什么吗?我怎样才能删除那个“价值”?在我看来,适配器根本没有使用,是否可以在 @XmlElements 内标记的类型中使用适配器?

编辑

经过几次测试,我发现问题可能出在我如何处理简单实例上。因此,我将最初的问题简化为:

给定一个简单的类

我怎样才能获得像这样的编组输出

代替

?

0 投票
1 回答
463 浏览

xml - 我可以将 JAXB2 Basics 插件与来自 EclipseLink 的 MOXy JAXB 实现一起使用吗?如果没有,有替代品吗?

最终,我希望 JAXB 生成 hashCode 和 equals 实现。JAXB2 Basics 插件可以做到这一点,它适用于 JDK 中的 Metro JAXB 实现,但在 MOXy 中失败。

我得到:

java.lang.IllegalArgumentException 在 org.eclipse.persistence.jaxb.JAXBBinder.updateXML(JAXBBinder.java:131) 在 org.eclipse.persistence.jaxb.JAXBBinder.updateXML(JAXBBinder.java:126)

MOXy 对我来说很好,否则,如果我摆脱了 equals 和 hashCode 生成代码,一切都很好。

0 投票
1 回答
869 浏览

validation - JAXB 和实体类验证

对于 REST-Web 服务,我必须验证传入的数据。是否可以使用 Entity Class 和 JAXB 而不是 xsd 来验证传入数据

0 投票
1 回答
2330 浏览

java - java.util.Map 属性的 Jaxb 命名空间

我有一个包含哈希图的简单类:

Main 方法生成以下 XML:

我遇到的问题是在输出哈希图时命名空间被删除。我想生成的是这样的xml:

0 投票
2 回答
5587 浏览

spring - Spring 3、ReST、@ResponseBody 和 @ExceptionHandler

我一直在尝试在基于 Spring 3 的简单 ReST Web 服务中进行异常处理。根据我所看到的一切,有一个错误会阻止它自动与 @ResponseBody 和 @ExceptionHandler 注释一起工作

https://jira.springsource.org/browse/SPR-6902

因此,鉴于直到 Spring 3.1 或 3.0.6 才支持它,当前进行异常处理的最佳方法是什么?我看过很多帖子,但没有找到对我有用的明确答案。一个理想的解决方案是自动提供对 xml 和 json 的支持

  • 我是否必须手动定义整个编组设置?这不会消除对使用 Spring 3 其余支持的注释的需要吗?
  • 似乎为了手动定义编组(即 Jaxb2Marshaller),我需要添加对 spring-ws 的新依赖,这有点痛苦
  • 只定义一个我的所有方法返回的“响应”对象并将所有函数包装在 try/catch 块中是否更容易?
0 投票
0 回答
671 浏览

jaxb - Jaxb - SchemaGen 和 java.util.Map 的命名空间问题

当一个类包含 java.util.Map 时,SchemaGen 会在 Map 元素上生成一个带有命名空间的 xsd。但是,当编组器从同一类生成 xml 时,不存在命名空间

这可能可以通过 XmlAdapter 解决,但这似乎需要为每个 Map 创建 3 个额外的类。由于我有大量地图,我不想沿着这条路线走。

有没有办法让 SchemaGen 和 Marshaller 生成相同的 xml?

示例类和模式:

测试1:

测试2:

SchemaGen 输出:

符合架构的 XML。(注意。jaxb 不会解组此 xml!)

Jaxb 生成的 XML。(注意。它不符合架构!)

0 投票
1 回答
2993 浏览

java - JAXB 中没有根元素的 XML

我想知道是否有一种方法可以创建一个对象,使得此类对象的列表不需要根元素。例如,如果我想创建一个类似的 XML

我可以将class Dogswhich 作为根元素并具有List<Dog>. 现在假设我想摆脱封装元素<Dogs>。这样狗的列表看起来像

我应该如何构建我的课程?