问题标签 [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.
arrays - jaxb2Marshaller 将 XML 解组为一个空字节数组
这就是问题所在。我正在使用 Spring 3.0.4 创建一个 rest web 服务(实际上我是一个新手)。我想通过客户端作为 XML 表示形式传递的休眠来持久化一个对象。为了完成这个任务,我使用了 jaxb2。
客户端发送的对象是一个具有两个子对象的节点,即数据和元数据。
问题在于,当客户端发送其 XML 时,SIUserData 被解组为一个不可预测的 byte[] 数组:有时输入的一部分被切除,有时它只是空的。
例如这个输入
在具有空 StorageInterfaceData 内容属性的对象中解组。
我相信这个问题会影响 byte[] 的处理,因为我尝试在 String 结尾更改 StorageInterfaceData 内容属性的类型,一切正常:S。
它遵循代码。
节点
数据
散装对象
省略元数据类以免过于冗长。有人可以澄清一下吗?
xml - @XmlElementWrapper 生成 NullPointerException
大家好,我想代表以下 xml 代码:
我想使用@XmlElementWrapper 注释来做到这一点。
这是我使用它的类:
这是 SimpleLink 类
最后是 Link 类
当我使用 Jaxb2 解组与我上面写的类似的 xml 时,问题就出现了:我得到一个 NullPointerException :-(。我读到 jaxb 中有一个关于这个事实的错误,但它在 2006 年得到了解决,我正在使用 spring 3(用他自己的jaxb2库)。
有人有线索吗?
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。
感谢您花时间帮我解决这个问题!
-安卡
java - 用@XmlJavaTypeAdapters 标记的@XmlElements?
我有这种情况
因此,复合是简单和/或复合的列表。两者都从定义为的值扩展
Simple 是一个标有适配器的类,用于编组/解组到/从简单字符串
Compound 不需要适配器。
问题是,如果我使用简单的“原样”,它会正确地编组/解组为
但是如果我在 Compound 中使用它,它会输出类似
我只是想知道为什么...我错过了什么吗?我怎样才能删除那个“价值”?在我看来,适配器根本没有使用,是否可以在 @XmlElements 内标记的类型中使用适配器?
编辑
经过几次测试,我发现问题可能出在我如何处理简单实例上。因此,我将最初的问题简化为:
给定一个简单的类
我怎样才能获得像这样的编组输出
代替
?
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 生成代码,一切都很好。
validation - JAXB 和实体类验证
对于 REST-Web 服务,我必须验证传入的数据。是否可以使用 Entity Class 和 JAXB 而不是 xsd 来验证传入数据
java - java.util.Map 属性的 Jaxb 命名空间
我有一个包含哈希图的简单类:
Main 方法生成以下 XML:
我遇到的问题是在输出哈希图时命名空间被删除。我想生成的是这样的xml:
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 块中是否更容易?
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。(注意。它不符合架构!)
java - JAXB 中没有根元素的 XML
我想知道是否有一种方法可以创建一个对象,使得此类对象的列表不需要根元素。例如,如果我想创建一个类似的 XML
我可以将class Dogs
which 作为根元素并具有List<Dog>
. 现在假设我想摆脱封装元素<Dogs>
。这样狗的列表看起来像
我应该如何构建我的课程?