当前位置: 首页 > 知识库问答 >
问题:

JAXB:使用maven插件将命名空间映射到包

元俊雅
2023-03-14

假设我在resources/a目录下有一个.xsd文件,在resources/b目录下有一个b.xsd文件。a、 xsd和b.xsd有自己的名称空间:http://a.com和http://b.com.最后,a.xsd导入b.xsd。

我想配置maven-jaxb2-plugin,以便在com包中生成A.java。包com中的a和B.java。B

  1. 如何将一个命名空间中的所有xsd文件绑定到一个包,以及将另一个命名空间中的所有xsd文件绑定到另一个包

共有1个答案

戚鸿
2023-03-14

如果你单独问这些问题会更好。

第一个问题-只需使用多个jaxb: SchemaBindings

<jaxb:bindings schemaLocation="a.xsd" node="/xs:schema">
    <jaxb:schemaBindings>
        <jaxb:package name="com.a"/>
    </jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="b.xsd" node="/xs:schema">
    <jaxb:schemaBindings>
        <jaxb:package name="com.b"/>
    </jaxb:schemaBindings>
</jaxb:bindings>

第二个问题-多次执行或自己做一些文件移动后处理。为什么多次执行不适合您?

更新:您说您对每个命名空间而不是每个文件的解决方案感兴趣。

首先,这其实没什么大不了的,归根结底,它是一个基于名称空间的解决方案。如果通过schemaLocation绑定,XJC会将schemaBindings与该模式的目标命名空间相关联。您不必自定义该模式的每个文件,也不能为一个名称空间定义两个包。

其次,您可以改用SCD绑定:

<jaxb:bindings scd="x-schema::tns" xmlns:tns="http://a.com">
    <jaxb:schemaBindings>
        <jaxb:package name="com.a"/>
    </jaxb:schemaBindings>
</jaxb:bindings>
 类似资料:
  • 目前,我正在映射一个命名空间,通过创建一个包的package-info.java文件与以下注释。 正如您所看到的,我的一个命名空间没有前缀,而另一个命名空间有前缀,这目前是有效的,但我想要另一种映射命名空间的方式,而不必创建单独的文件,任何人都知道我如何将命名空间映射放在类中的注释旁边? 在我的XML中,名称空间声明位于根元素中,如下所示: 我的类声明和注释类似于根元素的下面。 谢谢

  • 这是我的包信息级别映射 这是我的输入xml(只是根元素) 您可以注意到URI“http://www.company.com/commons“使用不同的前缀映射。<br>解组工作正常,使用 在一些输入修改之后,我需要将文件持久化(使用原始的名称空间前缀)。 问题是:< br >在解组期间,有什么方法可以检索名称空间/前缀映射吗?

  • 背景:我正在尝试将WSDL/XSD转换为Java类 问题:生成的包名称与命名空间不匹配。数字命名空间的最后一部分丢失,包中缺少02以下的部分 XSD已经-xmlns=“urn:iso:std:iso:20022:tech:XSD:pain.001.001.02” Java类生成——包iso。标准iso_20022.tech.xsd。疼痛001 001; 采取的步骤: 我尝试了2个maven插件,两

  • 我试图从通过JAXB生成的类序列化XML。 班级: 文件“package-info.java”: 编组器(简化,无需错误处理): 此代码生成: 我期待这样的事情: 我有一个类似的代码并且工作正常,但是我不明白为什么这个代码不显示命名空间。有线索吗?谢谢!

  • 我有情况, 有一个sample.xsd(旧版本-没有命名空间)。为同一个XSD文件使用XJC生成JAXB类。我得到了一个使用JAXB类基于XSD解封XML数据文件的示例。sample.xsd文件已更改(新版本-添加的命名空间)。再次为新的XSD文件使用XJC生成JAXB类。该示例已更新,现在可以用于新的XSD文件 现在我有一个情况,我正在获取基于旧XSD的XML数据文件,我想使用更新的示例文件来解

  • 这是我的xml,需要把它转换成Java。我使用了jaxb 并抛出以下异常javax.xml.bind.unmarshalException:意外元素(URI:“http://www.ae.com/event/load”,local:“order”)。需要的元素为<{}LM:order>