问题标签 [xjc]

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

binding - Jaxb 绑定文件被忽略

我在为一组模式构建 JAXB 绑定时遇到了一些麻烦,这让我有点笨拙。这是有问题的架构(它只是此特定构建中的可能架构之一):

xjc 声称上面声明的属性已经在其他地方声明:

做一些研究会让我相信问题是我需要一个绑定文件来解决重复的属性......而且我有一个:

然而问题依然存在。带有或不带有绑定文件的错误消息是相同的。我知道该文件正在被使用,因为如果我弄乱了节点选择器的 xpath,我会收到一条错误消息。就像 xjc 知道绑定文件在那里但忽略它。

这是无法构建绑定的命令行:

我已经在 jdk6 本机 jaxb (2.0) 和 jaxb 2.2.4 上尝试过这个(我在认可目录中安装了 jaxb-api.jar)

0 投票
2 回答
1798 浏览

java - 如何解决第三方 XML 架构冲突?

我正在使用一组由第三方编写的模式描述符文件。我需要为它们生成 JAXB 存根。每个 XSD 都定义了不同的消息类型,以及许多支持的简单和复杂类型。许多类型对于每个 XSD 都是通用的,但作者没有将它们分解到单独的 XSD 中,而是选择在每个命名空间中定义它们。当我尝试使用 xjc 将 XSD 编译到单个包中时,这会产生命名空间冲突的问题。我被迫将它们分成独特的包。问题是这使得它们在应该的时候不可互换。我必须做很多额外的转换才能在不同的消息类型中使用来自一种消息类型的数据。

我的问题:有什么方法(绑定自定义?)我可以指示 xjc 为每个共享类型使用一个 java 类,而不是分布在不同包中的唯一类?

这是一个简化的例子。我有两个 XSD,一个用于插入消息,另一个用于响应消息。响应旨在引用插入消息。

这是第二个 XSD...

请注意Identifier,两种模式中的复杂类型是相同的。它可以而且应该在消息类型之间互换。但是当我这样运行 xjc 时......

xjc -d java -p example.msg insert.xsd response.xsd

...我在 Message、Identifier 和 ObjectFactory 类上遇到如下冲突。

我完全理解 xjc 抱怨的原因,我试图找到一种方法来哄 xjc 使用 Identifier 类型的公共类,以及解决 ObjectFactory 类中的冲突。一种解决方案是将常用类型分解到单独的命名空间中,并从每个消息类型的 XSD 中引用它们,但如上所述,这些都是由第三方编写的,我无法更改它们。

现在我将每个 XSD 编译成一个单独的 java 包。这可行,但非常非常麻烦。

错误输出表明有一种方法可以通过绑定自定义来做到这一点,但到目前为止我还没有弄清楚如何做到这一点。谁能指出我正确的方向?

0 投票
2 回答
4630 浏览

java - 如何避免编组元素/标签中不必要的命名空间声明?

我有一个不是自己创建而是从另一方收到的 XSD。所以我不能改变这个XSD,因为我必须确保与对方的兼容性。

使用简单绑定模式的 XJC 2.2 和 JAXB 2.2 我想在一个空的 hello 元素中创建一个根元素。但是当编组时,我得到了很多额外的命名空间废话。在我看来,这似乎是不必要的。(它虽然有效,但要发送更多数据等......)

XSD 根元素:

Java代码:

编组结果:

首选结果:

或者:

有没有办法让这成为可能,最好不更改 XSD 或手动更改 XJC 编译的类?

0 投票
2 回答
19755 浏览

xsd - 创建一个通用的 xsd 生成类以供其他包使用

我正在尝试使用相同的生成类,但在单独的包中。所以结构应该是这样的:

但我不断得到这个:

我的 common.xsd 看起来像这样:

objectA.xsd 看起来像

objectB.xsd 看起来像:

我有一个通用的绑定文件 common.xjb,如下所示:

最后我的 maven 工作看起来像这样:

0 投票
1 回答
623 浏览

sbt - 如何更改 SBT 的 sbt-xjc 插件中的源目录?

根据文档,默认位置是:src/main/resources。

我的 XSD 在 src/main/schema 中,所以我需要更改源设置。

所以我使用了以下内容:

这导致:

0 投票
0 回答
1692 浏览

java - xjc 未知位置 - 使用 JAXB XJC 的 xsds 到 java 错误

我正在使用 JAXB 将多个 xsd 转换为 java,我使用 Jdeveloper 版本 10.1.3.4 作为我的 IDE。JAXB 1.0 版本,Xerces-J 2.6.2

以下是构建目标的顺序及其从下面的输出。我也尝试过使用 -nv 开关即使上面没有工作。我是 JAXB 的新手。

请找到以下蚂蚁日志:

请帮忙:

0 投票
1 回答
1404 浏览

java - glassfish 的 JAXB XJC 编译器参考实现的任何替代方案?

我想知道 Glassfish 的 JAXB XJC 编译器的参考实现是否有任何替代方案!?别误会我的意思,XJC 工作正常。但是,如果这是“参考实现”,则必须有其他实现。IBM有吗?

0 投票
1 回答
2542 浏览

ant - Intellij IDEA 无法识别 XJC 任务属性

我有一个带有 XJC 任务定义的 ant build.xml 文件:

jaxb dir cotnains jaxb-xjc.jar 里面有 XJCTask 类。

然后我在某个目标中调用 xjc 任务:

Intellij IDEA 无法识别 xjc 调用的结构/模式,并以红色突出显示所有属性(目标、包、标题)和包含元素(模式)。

如果我选择 Ant 选项并将 jaxb-xjc.jar 添加到其他类路径列表,这将无济于事。我使用捆绑的 Ant 1.8.2

不好的是,当我在 IDEA 中编译它时,会出现很多相关错误,但是当我运行构建脚本时,一切正常。我想抑制这些错误。

有任何想法吗?

0 投票
3 回答
6070 浏览

maven - jaxb2 maven 插件在第二次执行时不起作用

我有一个模块化项目,对于每个模块,我使用 jaxb2-maven-plugin 用 xjc 编译 XSD 文件。现在,假设模块按照 A-->B 的顺序编译。对于 A 一切正常(即我得到 *XsdImpl.java),但对于 BI 得到以下内容:

两个模块都使用相同的插件配置:

错误总是出现在第二个模块上(不管是 A 还是 B)。我花了很多时间试图弄清楚幕后发生的事情,但不幸的是没有成功......例如,我想了解第一次执行时会发生什么:

我猜想使用另一个类而不是 org.apache.xerces.jaxp.SAXParserImpl,但不知何故,第二次选择了 org.apache.xerces.jaxp.SAXParserImpl。你知道我该如何证明这一点吗?或者有人已经遇到过同样的问题吗?

非常感谢您的任何提示/帮助!再见

0 投票
1 回答
239 浏览

java - XJC - 使用 Xpath 生成 xml

使用 XJC 将 XSD 转换为 java 对象后,我想生成一个 xml 文件,为 xpath 提供 xpath 和值。

例子。

假设我给 xpath 和值

它应该在内部分配给生成的对象CustomerType.setName()......

XML 也应该按照 Xpath 规则生成。

我知道在 Castor 中我们可以使用 ClassDescriptor 和 FieldDescriptor 来做到这一点。但我想知道如何使用 XJC 做到这一点