问题标签 [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 回答
4108 浏览

java - JAXB 2.0 验证不起作用

我正在研究 JAXB 2.0,目前正在验证验证部分,因为它没有按预期工作。下面是验证码

这是对方法的调用

根据 XSD,我几乎没有作为必填字段的字段,但即使删除它们,它也会给我错误,而它没有给出任何内容并将我的 xml 文件解析到相应的对象中,任何一点都可以出错吗?

这是XSD的一部分

和生成的Java文件

我正在从 xml 文件中删除 stateID,但在验证部分仍然没有警报

提前致谢

0 投票
2 回答
6841 浏览

java - Java xml 序列化 null 处理

我正在使用 JAXB2 将对象序列化为 xml。

有没有办法强制它像下面的例子一样创建整个对象结构,即使它没有填充支持对象?

即使没有设置 asignee 属性,这也是我的预期结果。

我使用以下代码进行序列化:

0 投票
2 回答
27930 浏览

java - 您如何自定义 JAXB 生成复数方法名称的方式?

我们正在使用 JAXB 生成 Java 类,并且遇到了一些生成的复数方法名称不正确的情况。例如,我们期望getPhysicians得到getPhysicien. 我们将如何自定义 JAXB 如何使特定方法复数?

架构:

生成的Java代码:


更新

布莱斯已经回答了这个问题。但是,我不喜欢在 XML 模式中混合诸如 JAXB 自定义之类的问题。因此,对于那些有相同偏好的人,这里有一个 JAXB 绑定文件,它实现了与 Blaise 建议的相同的事情,将 JAXB 自定义排除在模式之外:

0 投票
2 回答
7901 浏览

java - spring ws在使用带注释的端点时找不到适配器

我正在使用 Java 6 和 spring-ws 创建一个非常简单的 Web 服务,它以 BusquedaRequest Jaxb 对象的形式接收 2 个参数并返回相同的对象。

该对象是使用 xjc 编译器创建的,我使用 Jaxb2Marshaller 作为 mashaller 和 GenericMarshallingMethodEndpointAdapter 来转换为传入的 xml 并输出。我在扩展 AbstractMarshallingPayloadEndpoint 类时进行了这项工作,但是当我切换到使用 Endpoint 和有效负载注释时,它总是失败。

Web 服务可以正常启动,但是在使用客户端访问它时,我收到了这个异常。

我已经看到对这个问题的回答,它建议使用我已经完成的 xjc 编译器来编译对象。还有人建议在 spring-ws-servlet.xml 中没有定义适配器,我也这样做了。请参阅下面定义的 spring-ws-servlet.xml:

类端点如下:

我生成的BusqeudaRequest对象的xsd如下:

有人有任何想法可以扩展我已经实施的建议吗?

0 投票
2 回答
2182 浏览

java - 如何让 JAXB 识别 @XmlElement(default='something') 注释参数?

使用 JAXB 2.1 RI 生成具有固定元素值的 XML 时运气不佳。我们正在使用 xjc 生成 XML 绑定代码并整理结果。

它适用于使用<xs:attribute fixed='something'/>和 JAXB 定制属性的属性fixedAttributeAsConstantProperty。对于元素,我们认为没有办法做到这一点。或者有吗?

作为一种解决方法,我们使用<xs:element default='something'/>了 which 变成@XmlElement(default='something'). 现在我的猜测是,您可以告诉编组器以某种方式解释default参数并生成具有相应内容的元素,例如<element>something</element>.

我查看了标准和 RI 供应商特定的编组器配置属性,但没有找到有用的东西。似乎有一个 xjc 插件可以做类似的事情[1],但如果没有标准的 JAXB 方式来做这件事,我会有点惊讶。

任何指针都非常感谢,谢谢。

[1] http://fisheye5.cenqua.com/browse/~raw,r=1.5/jaxb2-commons/www/default-value/index.html

0 投票
1 回答
31685 浏览

spring - JAXB 解组异常:spring webservice 1.0.4 时出现意外元素

我已经编写了 spring webservice 客户端示例 这在 springws1.5 上运行良好,但是当使用 spring ws 1.0.4 运行时,我遇到了异常。请帮助我为什么我们会得到这个异常以及如何解决。我只需要使用 down 版本,因为我的 spring 版本是 2.0.4。请尽可能尽快回复。

我使用以下示例进行了编码 http://justcompiled.blogspot.com/2010/11/web-service-client-with-spring-ws.html 我做了以下更改:wsconsume使用jboss bin 中的批处理文件 生成类,我保留了罐子

jboss/../lib

以下是我的spring配置文件:

现在我已经更换了所有东西和地方webservice 1.5.0 jar。我仍然面临这个问题,以前它有效。我没有做太多的改变。我的代码有什么问题吗?如何检查..如何跟踪。非常感谢任何帮助。我的 ObjectFactory 很简单:

}

输入以下是类级别注释

回复:

0 投票
2 回答
1821 浏览

spring - Spring3、JAXB2、Java6、NamespacePrefixMapper 问题

我构建了一个简单的 Spring3、Hibernate3/(JPA2)、RESTful 服务,托管在 Tomcat6 上,它使用 JAXB2 来编组结果。(它使用带注释的 pojo。)我需要使用特定的命名空间前缀,所以我编写了一个自定义的 com.sun.xml.bind.marshaller.NamespacePrefixMapper。我在我的应用程序中包含了 JAXB2 RI jar,一切正常。

然后有人说很好,我们也需要在WebLogic 11g(10.3.3)下托管它。没问题,我创建了特殊的 weblogic 部署描述符来首选应用程序 jar,重命名我的 persistence.xml,并将 WAR 包装在带有 JPA2 jar 的 EAR 中。它工作得很好,几乎。

不幸的是,我们的 WebLogic 服务器运行一个自定义安全领域,该领域也使用 JAXB 并导致与我的应用程序发生冲突。所以我从应用程序中删除了 JAXB jar,它在 WebLogic 中运行良好。当然,除非我将 JAXB jar 添加到 Tomcat,否则它不再在 Tomcat 下运行。我想避免这种情况。

所以我的问题......我已经阅读了很多关于 stackoverflow 的帖子,其中包含很多关于使用 sun“内部”​​JAXB2 实现与将 RI 与您的应用程序打包的意见/分歧。这个问题还没有干净的解决方案吗?我的堆栈是否支持在不包括 JAXB2 RI 的情况下自定义映射我的命名空间前缀的另一种方式?我可以安全地使用 Java6“内部”JAXB NamespacePrefixMapper,还是会随各种 Java 版本一起出现?Spring3 是否提供另一种解决方案?Java6 JAXB2 实现的真实故事是什么?它只供 Sun(Oracle)内部使用吗?

谢谢。

0 投票
3 回答
496 浏览

xml - 需要反转对象关联方向时的 Java 对象图 -> xml

我正在处理的一个 java 应用程序具有类似于下面的关系的对象。在实际应用程序中,这两个对象都是 JPA 实体。

应用程序中需要创建表单的 xml:

p>

所以我们有这样一种情况,对象图以与在 xml 中的表达方式相反的方向表达事物和基础之间的关系。

我希望使用 JAXB 创建 xml,但理想情况下我不想创建一个新的对象层次结构来反映 xml 中的关联。有什么方法可以从当前形式的实体中创建所需形式的 xml(通过使用 xml 注释或其他方式)?我没有任何使用 JAXB 的经验,但从我所做的有限研究来看,似乎不可能以任何直接的方式扭转关联的方向。任何帮助/建议将不胜感激。建议的另一种选择是使用 XLST 将 xml 转换为正确的格式。我还没有对这个主题进行任何研究,但是当我有更多信息时,我会补充这个问题。

谢谢,

马特。

0 投票
4 回答
21701 浏览

java - JAXB 2.x:如何覆盖父类的 XmlElement 注释 - 不可能的任务?

为什么这是不可能的?它看起来很简单,但它的行为并不像预期的那样。

摘要:A 类使用聚合的 DataA bean,而 B 类(A 类的子类)使用聚合的 DataB bean(而 DataB 扩展 DataA)。

我编写了这些测试类来可视化和解释我的问题:

A类:

及其 DataA 类(我使用了 FIELD 注释,以便对所有字段进行编组):

现在是 B 类(A 类的子类):我的目标是重用 A 的功能,并通过使用 DataB bean 重用来自 DataA bean 的属性:

其对应的 DataB bean 如下所示:

现在,当我编组 A 类的一个实例时,它会给出以下输出:

当我编组 B 类的一个实例时,我得到了完全相同的结果:

但我预计 string3 也会被编组,但它只是编写 bean DataA 的属性!为什么?在考虑 OOP 时,这并不是很直观。

当我也在 B 类上设置 @XmlElement 注释时......像这样:

...然后该属性被编组两次,因为它曾经被父类和子类注释过。这也是我不想要的:

现在的输出是:

因此,我对 JAXB 的期望是以下 XML:

任何提示如何调整 JAXB 以产生预期的结果?感谢您的任何反馈。

0 投票
2 回答
13595 浏览

java - Jaxb 2.0 Schema 验证问题

我正在使用 Jaxb 2.x 并尝试使用以下教程使用给定的 XSD 验证 XML 文档

教程链接

她的是我写的代码

我的 XMLErrorHanlder 类具有以下签名

警告和致命代码现在已删除,它使用 XSD 验证 XML,但它只显示第一个遇到的错误,而我想在 colsole 上打印所有错误和控制台上的警告

我不确定我在哪里做错了这方面的任何帮助都会有所帮助

Edit1 这里是 XSD 文件的一部分

XML文件是

在进行了一些研发之后,我的假设是 XSD 结构或生成的 XML 存在一些问题,但我不确定