问题标签 [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.
java - 配置多态对象的集合以在 JAXB2 中工作
我正在从 Castor 切换到 JAXB2 以在 XML 和 Java 对象之间执行编组/解组。我在尝试配置多态对象集合时遇到问题。
示例 XML
项目类
该oranges
列表工作正常,我在列表中看到 2 个橙子。但是,我不确定如何配置fruitList
. fruitList
应该有 3 个水果:2 个橙子和 1 个苹果。
水果类
Fruit 是一个抽象类。出于某种原因,将此类定义为抽象似乎会引起很多问题。
橙类
苹果类
如何配置我fruitList
的 inProject
以实现我想要的?
非常感谢!
java - JAXB2:将嵌套元素映射到同一个 Java 类
我在尝试将嵌套元素映射到同一个 Java 类时遇到了麻烦。
XML
我在这里要做的是将id
属性和text
元素设置为SlideText
类。
模块类
幻灯片类
SlideText 类
我尝试使用@XmlElementWrapper
ontext
属性,但我得到一个@XmlElementWrapper
只能应用于集合的异常。
有没有办法映射<layout><text>hello</text></layout>
到SlideText
的text
属性?
谢谢。
更新
为了说明我在这里要完成的工作,幻灯片可以是任何类型,具体取决于使用的布局。Amodule
知道它是 aslide
但它不知道它是什么幻灯片,这就是我有抽象Slide
类的原因。
本质上,如果这可行,我将创建SlideImage
并SlideTextVideo
扩展Slide
.
实际的 XML 文件如下所示:-
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 生成模式(仅供参考)
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)是否可以配置为在这种情况下正常工作
完整的堆栈跟踪:
jaxb - JAXB2 解组 xsd:anyType 错误
我在解组包含 xsd:anyType(ur-type) 对象的数据时遇到问题,例如:
JAXB2 为上面的元素创建以下 Java 类;
编组工作,但在解组时,它会引发以下异常;
我在用;
谢谢,
亨利·金
jaxb - 调试 JAXB 问题
我在编组对象时遇到了 JAXB 2 的问题。我有一个 XmlJavaTypeAdapter,它在单元测试中运行良好,但是当我尝试从 Web 服务(使用 JAX-WS)编组相同的对象图时,XmlJavaTypeAdapter 被完全忽略。调试此问题的最简单方法是什么?
我有一个简单的独立项目检入我的 svn 存储库,它演示了这个问题。有人可以看看我是否做错了什么吗?该项目的 URL 是:http ://archfirst.googlecode.com/svn/trunk/java/examples/jaxb-jaxws-sample 。根文件夹中有一个 readme.txt 文件,详细描述了该问题。
谢谢。
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 发生了什么?其他人都在用什么?
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 任务工作?
在此先感谢
,
java - 为什么 JAXB 2 RI 的 XJC 简单模式会更改集合名称?
JAXB 简单绑定模式将集合名称修改为它们的复数“版本”,例如“additionalData”变为“additionalDatas”。有没有办法改变这种行为?我需要有一个与 XSD 字段名称相同的 Java 字段名称和方法名称。我的绑定文件:
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 用于解组的类?