java - 将外部自定义绑定(bind)应用于包含的架构

标签 java jakarta-ee jaxb jaxb2

我正在使用 binding.xjb 将自定义绑定(bind)应用到 main.xsd。工作正常。

我想分解 main.xsd 以包含“common.xsd”,但这样做会破坏我的绑定(bind).xjb。

示例:下面是我的绑定(bind).xjb(出价之一)

<jaxb:bindings node="/xsd:schema/xsd:complexType[@name='Job']/xsd:attribute[@name='stagingId']">
  <jaxb:property generateIsSetMethod="true"/>
</jaxb:bindings>

如果我必须将元素“Job”移动到 common.xsd,我应该如何更改此绑定(bind)?

我已经尝试了以下方法,但不起作用

// Because noew "common.xsd" will have its own "xsd:schema" element 
node="/xsd:schema/xsd:schema/xsd:complexType[@name='Job']/xsd:attribute[@name='stagingId']"

node="//xsd:complexType[@name='Job']/xsd:attribute[@name='stagingId']"

据我了解 - 技巧是编写适当的 XPATH 来到达该节点。

任何指点都将受到高度赞赏。
卡雷普尔

更新:我发现这些自定义绑定(bind)可以内联移动到定义元素的位置。

最佳答案

您可以利用剧集文件来实现此目的。当您从导入您之前生成的类的另一 XML 模式生成类时,情节文件允许您重用从一个 XML 模式生成的工件。

下面是如何生成剧集文件的示例。

xjc -b binding1.xml -episode common.episode common.xsd

下面是如何使用剧集文件的示例。

xjc -d out main.xsd -extension -b common.episode   

完整示例

关于java - 将外部自定义绑定(bind)应用于包含的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244609/

相关文章:

java - JAXB、抽象类和多模块项目

java - 以编程方式连接到 chromecast 路由 : do I need a permission?

java - HashMap 不必要地放置重复值

java - JAXB REST PUT 引用关联

java - 如何使用 log4j 编写多级日志消息? (例如信息和错误)

jakarta-ee - 如何在 Java EE 中使用 CDI 编写 main()?

java - 无法将类型 [...] 编码(marshal)为元素,因为它缺少 @XmlRootElement 注释

java - WSO2 Identity Server 5.10.0 和 Samples 4.2.0 继续出现 java.lang.ClassCastException : class org. opensaml.saml1.core.impl.ActionBuilder

java - 如何迭代arraylist中的两个int数组

java - 用java提升框架