有没有办法忽略 JAXB 绑定文件中的空节点?

Is there a way to ignore empty nodes in JAXB bindings file?

我正在尝试创建一个通用的 .xjb 绑定文件,以跨多个项目从 WSDL/XSD 提供一致的 Java classes 生成。 我们通过 maven-jaxb2-plugin(由@lexicore 制作)生成代码。

问题出在多个项目部分。如果特定绑定指令与提供的 XSD 或 WSDL 中的任何内容都不匹配,则 class 生成失败并显示

XPath evaluation of "<some_xpath_expression>" results in empty target node

我如何告诉 JAXB 忽略这些情况,以便绑定文件无需微调即可用于任何项目,而不管使用的元素类型如何?

这是一个(简化的)版本,展示了我遇到的问题:

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1"                
              xmlns:xs="http://www.w3.org/2001/XMLSchema"
              xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
              jxb:extensionBindingPrefixes="xjc">
    <jxb:bindings schemaLocation="path/to/the/schema" node="/xs:schema">
        <jxb:bindings multiple="true" node="//*[@type='xs:dateTime']">
            <xjc:javaType name="java.time.LocalDateTime" adapter="a.b.c.LocalDateTimeAdapter" />
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

如果我尝试从没有 dateTime 元素的模式生成 classes,它将失败。

objective 最终是要创建一些不同团队的所有项目都可以重用的东西,除了 schemaLocation

您需要在您希望允许不匹配任何节点的绑定上设置 required="no" 属性,即

<jxb:bindings required="no" multiple="true" node="//*[@type='xs:dateTime']">

根据您的上下文,您也可以选择说 required="false"required="0"