问题标签 [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 投票
3 回答
2371 浏览

java - 配置多态对象的集合以在 JAXB2 中工作

我正在从 Castor 切换到 JAXB2 以在 XML 和 Java 对象之间执行编组/解组。我在尝试配置多态对象集合时遇到问题。

示例 XML

项目类

oranges列表工作正常,我在列表中看到 2 个橙子。但是,我不确定如何配置fruitList. fruitList应该有 3 个水果:2 个橙子和 1 个苹果。

水果类

Fruit 是一个抽象类。出于某种原因,将此类定义为抽象似乎会引起很多问题。

橙类

苹果类

如何配置我fruitList的 inProject以实现我想要的?

非常感谢!

0 投票
2 回答
6128 浏览

java - JAXB2:将嵌套元素映射到同一个 Java 类

我在尝试将嵌套元素映射到同一个 Java 类时遇到了麻烦。

XML

我在这里要做的是将id属性和text元素设置为SlideText类。

模块类

幻灯片类

SlideText 类

我尝试使用@XmlElementWrapperontext属性,但我得到一个@XmlElementWrapper只能应用于集合的异常。

有没有办法映射<layout><text>hello</text></layout>SlideTexttext属性?

谢谢。

更新

为了说明我在这里要完成的工作,幻灯片可以是任何类型,具体取决于使用的布局。Amodule知道它是 aslide但它不知道它是什么幻灯片,这就是我有抽象Slide类的原因。

本质上,如果这可行,我将创建SlideImageSlideTextVideo扩展Slide.

实际的 XML 文件如下所示:-

0 投票
3 回答
4922 浏览

java - JAXB minOccurs 在需要设置为 true 时消失

我从 @XmlElement 的 JAXB 文档中得到了这个

如果 required() 为真,则 Javabean 属性将映射到具有 minOccurs="1" 的 XML 模式元素声明。maxOccurs 对于单值属性为“1”,对于多值属性为“无界”。

然而当我说

我在 .xsd 中得到以下信息

我想知道如何使 minOccurs 等于 1。似乎required = true原因minOccurs消失了

编辑 我意识到默认值为1。无论如何minOccurs在.xsd中显示为1

Edit2 我正在使用 JAXBContext.generateSchema 生成模式(仅供参考)

0 投票
1 回答
3482 浏览

maven-2 - spring Jaxb2Marshaller+contextPath+tomcat嵌入maven throws

我正在使用 spring 的 Jaxb2Marshaller(没有 Web 服务)来解组一些 xml。xml 代码是通过 maven-jaxb-plugin 生成的代码,我在 spring 中通过以下方式实例化 Jaxb2Marshaller:

然后开始:

第一个解组器创建得很好,第二个抛出 org.springframework.oxm.jaxb.JaxbSystemException 因为它找不到 ObjectFactory (由 maven-jaxb-plugin 生成,我已经验证它实际上存在于jar,在正确的包中)。

我实际上有两个解组器,(尽管我尝试使用一个解组器和 contextPath 用冒号分隔的包路径,结果相同)。

我认为这通常不是 spring 或我的配置的问题,因为如果我部署到一个完整的 tomcat 容器中,它可以正常工作。我确实注意到 maven 将 tomcat 放在我的 project/target/tomcat 文件夹中,并且存在一些差异,例如没有 lib 目录。我实际上不知道嵌入式 tomcat 和常规安装之间的所有区别。

有人可以解释一下:
1)嵌入式tomcat与常规安装有何不同
2)是否存在已知限制
3)是否可以配置为在这种情况下正常工作

完整的堆栈跟踪:

0 投票
0 回答
1206 浏览

jaxb - JAXB2 解组 xsd:anyType 错误

我在解组包含 xsd:anyType(ur-type) 对象的数据时遇到问题,例如:

JAXB2 为上面的元素创建以下 Java 类;

编组工作,但在解组时,它会引发以下异常;

我在用;

谢谢,

亨利·金

0 投票
1 回答
985 浏览

jaxb - 调试 JAXB 问题

我在编组对象时遇到了 JAXB 2 的问题。我有一个 XmlJavaTypeAdapter,它在单元测试中运行良好,但是当我尝试从 Web 服务(使用 JAX-WS)编组相同的对象图时,XmlJavaTypeAdapter 被完全忽略。调试此问题的最简单方法是什么?

我有一个简单的独立项目检入我的 svn 存储库,它演示了这个问题。有人可以看看我是否做错了什么吗?该项目的 URL 是:http ://archfirst.googlecode.com/svn/trunk/java/examples/jaxb-jaxws-sample 。根文件夹中有一个 readme.txt 文件,详细描述了该问题。

谢谢。

0 投票
1 回答
724 浏览

maven-2 - 哪些 Maven2 插件可用于 JAXB2?

我想通过 Maven2 插件使用 JAXB2 从 XML Schema 文件生成 Java 源代码(如本博文中所述)。

JAXB 似乎有 2 个 Maven 插件:“Maven 2 JAXB 2.x 插件”(org.jvnet.jaxb2.maven2:maven-jaxb2-plugin)托管在 java.net 上,“Maven JAXB 2.1 插件” (org.codehaus.mojo:jaxb2-maven-plugin) 托管在 Codehaus。

在我看来,java.net 上的那个有更多的功能,比如 XJC 插件。但是它的 java.net 页面参考了highsource.org的文档,不幸的是最近似乎不可用。

那么最好的选择是什么?有谁知道 highsource.org 发生了什么?其他人都在用什么?

0 投票
1 回答
3226 浏览

ant - schemagen ant 任务忽略 package-info.java

场景如下:我有一个 java 包 ( myapp.config ),其中包含我所有的 JAXB 注释类,我想从中生成一个 XML 模式文件。包中还有一个package-info.java文件,该文件包含包元素上的@XmlSchema注解,因此在整个包中有效:

当我运行 JDK 自带的schemagen命令行工具时,

我得到了正确的结果:生成的schema1.xsd文件中的根元素包含targetNamespace和其他必要的属性:

但是,当我想在我的 Ant 脚本中执行相同的任务时,

schemagen 工具似乎完全忽略了命名空间注释,因为在生成的schema1.xsd文件中,没有它们的踪迹:

当我在详细调试模式下运行schemagen任务时,很明显该工具确实加载了所有.java文件,除了package-info.java,这就是它对命名空间一无所知的原因。

你以前遇到过这种奇怪的行为吗?为什么命令行工具处理包信息文件,而 Ant 任务不处理?我应该怎么做才能使 Ant 任务工作?

在此先感谢

0 投票
1 回答
12103 浏览

java - 为什么 JAXB 2 RI 的 XJC 简单模式会更改集合名称?

JAXB 简单绑定模式将集合名称修改为它们的复数“版本”,例如“additionalData”变为“additionalDatas”。有没有办法改变这种行为?我需要有一个与 XSD 字段名称相同的 Java 字段名称和方法名称。我的绑定文件:

0 投票
2 回答
9332 浏览

spring-mvc - 将 Jaxb2Marshaller 与具有相同 @XmlRootElement 名称的多个类一起使用

我正在使用 spring-mvc 和 Jaxb2Marshaller 开发 Web 服务。

我有两个类,都用相同的@XmlRootElement名称注释

所有三个类(AbstractRequest、Foo、Bar)都以相同的顺序包含在 classesToBeBound 列表中

现在使用 Bar 的请求工作正常。但是使用 Foo 的那个在使用消息解组期间抛出 ClassCastException 异常Bar cannot be cast to Foo

控制器代码是这样的,

我猜这是因为 Bar 是一种覆盖 Foo 的原因,因为它是在要绑定到 spring-servlet.xml 文件中的类列表中的 Foo 之后编写的

但是,我也有多个带有注释的类,@XmlRootElement(name="response")并且编组响应没有任何问题。

有没有办法指定 jaxb2Marshaller 用于解组的类?