问题标签 [xjb]

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 回答
14658 浏览

jaxb - 如何从 WSDL 生成 *.xjb 文件?

我有一个 WSDL 文件weatherservice.wsdl,我正在尝试使用xjc. 我如何使用 xjc 做到这一点?

我没有从 xjc 找到任何命令行参数来执行此操作。 xjc -p com -wsdl weatherservice.wsdl

0 投票
2 回答
10356 浏览

maven - 将 XJB 与 jaxb2-maven-plugin 一起使用

我有一个采用以下结构的多模块 Maven 项目:

根模块的 POM 只是聚合了模块 a 和 b(除其他外):

模块 a 的 POM 如下(除其他外):

因此,当我在 module-a 上运行 mvn 时,一切正常并且构建成功。但是当我在根模块运行它时,我从 XJC 插件中得到一个异常,它试图在根模块下找到绑定文件:

有趣的是,它能够正确定位 XSD:

  • 有什么线索吗?
  • 这是构建脚本中的配置问题吗?

我的构建系统的细节:

从这里参考 JAXB2 Maven 插件文档。还搜索了一些关于 SO 的相关问题,但它们没有在任何地方解释我的具体问题。

更新:看起来像一个未解决的问题。如果有解决方法,请保持线程打开。

0 投票
0 回答
775 浏览

java - 使用 xjc 和自定义绑定文件注入注释

好吧,我有这样的外部(和旧)WSDL 结构:

我正在使用 xjc 从这个 WSDL 创建 Java 类。

我在这个 WSDL 中使用的请求以以CustomClassName开头的纯 XML 响应,但这个类没有用XMLRootElement注释。

当我手动将此注释添加到此类时,我的代码工作得很好。

但是我想在调用xjc时使用自定义绑定文件来添加注释,而atm我无法让它工作。我当前的自定义绑定文件如下所示:

(我尝试了我发现的不同语法,但该类仍然没有注释。)

我的错在哪里?

0 投票
1 回答
2381 浏览

jaxb - 通过绑定文件的 JAXB XmlAdapter

考虑这个 XSD:

这会产生以下生成的 Java 类:


因为IdAttribute只包含一个 String ( id),所以我想将这些 String 直接映射到我FoobarType的字符串中以便于使用。因此我写了一个XmlAdapter

我已经手动编辑了生成的类,以XmlAdapter按预期验证我的作品(确实如此):


当然,我希望在代码生成期间完成这个小代码更改,所以我添加了以下绑定文件 ( src/main/xjb/bindings.xjb):

尝试1:

结果

尝试2(从这里):

结果

我尝试了一些变体,但它们都导致了类似的错误。那么添加XmlApender使用绑定文件的正确方法是什么?

0 投票
1 回答
1077 浏览

java - JAXB:如何指定一个复杂类型由不同的 XSD 生成的绑定规则?

我有几个全面的 XSD,其中包括相同成员的相同 complexType 定义。每个 XSD 都有自己的命名空间。因此,当我xjc在 xsds 上运行时,我会在每个命名空间中生成相同的 complexType 类。

这最终会变得非常混乱且难以处理。我想创建一个绑定,告诉 XJC 不要为其中一个 XSD 生成 complexType,而是使用另一个 xsd 已经生成的类。

我尝试了以下但没有成功:

我希望告诉 XJCSandboxType在 sandboxlist.xsd 实际上应该是类com.domain.schema.model.v4_0.sandboxinfo.SandboxType(来自不同的 XSD)。

什么是正确的语法?

0 投票
0 回答
218 浏览

java - Java 在不知道标签的情况下使用 JAXB 解组 XML 文件

所以我有大约 950 个 XML 文件需要阅读,我有用于使用 .xsd 和绑定 .xjb 文件生成的那些 XML 文件的 Java 类。我的问题是我需要这段代码是可互换的,这意味着它必须能够读取具有不同标签的不同 XML 文件,并且仍然能够返回这些值。我尝试使用 method.invoke 来调用所有 get 方法,但它们没有按特定顺序返回,这无济于事,因为我需要这些值才能将其放入 .csv 文件中。因此,如果有人可以帮助我实现这一目标,将不胜感激。

0 投票
2 回答
1656 浏览

java - cxf wsdl2java 生成 ArrayOf而不是类型[]

我正在使用 cxf wsdl2java 命令行命令来生成客户端(java 文件)。我的 xsd 看起来像这样 -

生成的java文件ConfirmSMSResults.java有这样的东西

@XmlElement(required = true) protected ArrayOfString smsIds;

它应该在哪里protected String[] smsIds;

date我对文件中定义的数据类型有类似的问题xsd,它被转换为XMLGregorianCalendar. 但是,我通过使用外部xjb文件并在那里定义绑定来解决它。可以在这里找到。对于 Array 的问题,我似乎找不到类似的东西。

先感谢您。

0 投票
1 回答
590 浏览

xml - 两个不同的 xsd 文件中的相同元素名称

我有两个 xsd 文件。但是,两个文件中的元素名称相同。因此,为了克服冲突,我创建了绑定文件。

请求.xsd

响应.xsd

绑定文件 (XJB)

如您所见,我的两个 xsd 文件都包含元素 name="XML" 并创建绑定文件以克服生成模型类时的冲突。

我收到一个错误:“.//xsi:attribute[@name='XML']”的 XPath 评估导致空目标节点

请告诉我,我该如何解决这个问题。

0 投票
0 回答
497 浏览

java - 使用绑定更改 XmlRootElement 注释名称

我正在尝试使用 jax-b 插件将我的 xsd 文件转换为 java 对象(该插件读取我的 xsd 文件并将它们转换为模型)。因为我有两个带有请求和响应模式的 xsd。

在这两种模式中,我都有相同的根元素名称,即 XML。有人建议我不要创建绑定文件来克服同名冲突,而是在两个 xsd 上使用不同的名称。

我应用了更改。但是,当我的 jax-b 进行编组和解组时,它会转换为我提供的新名称。

例子:

要求

回复

通过 Jax-b 插件它创建了我:

编组

但是我的要求应该是

请建议我解决方案。创建对象时可以使用绑定吗?我不想手动将 rootElement 名称更改为 XML

请回复

0 投票
1 回答
1208 浏览

jaxb - 通过 xjc 生成为 @XmlElement 时如何更改 XSD 元素名称的大小写

我有一个模式,其中元素名称在 PascalCase 中定义,例如:

但我希望它生成为:

我知道这听起来有点奇怪,但它允许我使用 Jackson JAXB 注释支持在 camelCase 中生成我的 JSON。

这可能吗?