【问题标题】:How can I map null namespace to a specific package?如何将空命名空间映射到特定包?
【发布时间】:2015-12-06 19:17:55
【问题描述】:

我正在尝试使用 org.jvnet.jaxb2.maven2:maven-jaxb2-plugin 编译一堆 XSD。

我将命名空间映射到这样的包。

<jaxb:bindings namespace="urn:some:a" schemaLocation="../xsd/a.xsd">
    <jaxb:schemaBindings>
      <jaxb:package name="some.a"/>
    </jaxb:schemaBindings>
  </jaxb:bindings>
<jaxb:bindings namespace="urn:some:b" schemaLocation="../xsd/b.xsd">
  <jaxb:schemaBindings>
    <jaxb:package name="some.b"/>
  </jaxb:schemaBindings>
</jaxb:bindings>

问题是c.xsd 不在任何命名空间中。它实际上编译成generated 包。

我害怕,

<jaxb:bindings namespace="" schemaLocation="../xsd/c.xsd">
  <jaxb:schemaBindings>
    <jaxb:package name="some"/>
  </jaxb:schemaBindings>
</jaxb:bindings>

它不起作用。

我该怎么做?


更新

哇,xjc 工具文档说...

如果没有声明 targetNamespace,则使用名为 generated 的硬编码包。

【问题讨论】:

    标签: maven jaxb xml-namespaces xjc


    【解决方案1】:

    哇,xjc 工具文档说...

    如果没有声明 targetNamespace,则使用名为 generated 的硬编码包。

    仅当它未使用jaxb:package 自定义时,请参阅com.sun.tools.xjc.reader.xmlschema.ClassSelector

    实际上,以下自定义应该可以工作:

    <jaxb:bindings schemaLocation="../xsd/c.xsd">
      <jaxb:schemaBindings>
        <jaxb:package name="some"/>
      </jaxb:schemaBindings>
    </jaxb:bindings>
    

    jaxb:bindings 上不需要 namespace

    这是test project,其中demonstrates exactly that

    免责声明:我是maven-jaxb2-plugin 的作者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 2017-02-05
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多