【问题标题】:Can we generate JAXB classes for a set of xsd in multiple packages?我们可以为多个包中的一组 xsd 生成 JAXB 类吗?
【发布时间】:2012-11-19 09:56:25
【问题描述】:

我有一个 xsd,其中嵌入了 几个子 XSD(使用“xsd:include”。)(但每个 xsd 都属于 相同的命名空间)。我被要求在单独的子包(每个子 XSD 一个子包)而不是一个包中生成 jaxb 类。

根据我目前阅读的内容,我们可以将jaxb:schemaBindings 添加到这些单独的xsd 中,并在单独的包中生成类,只要这些xsd 属于不同的命名空间

但就我而言,我想做的是在几个子包中为一组属于相同命名空间的 xsd 创建类。你能帮我用 JAXB 做这件事吗?


编辑:我添加了更多关于我的问题的描述以进一步澄清它。

我所有的 XSD 都有以下标题。因此相同的命名空间

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:srm="http://www.mycompany.com/srm/"
    targetNamespace="http://www.mycompany.com/srm/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0" elementFormDefault="qualified"
    attributeFormDefault="unqualified" version="1.0">

假设我的架构文件名是 A.xsd、B.xsd 和 C.xsd。

  • 在 C.xsd 中,我定义了一些带有上述标头的元素(字符串类型)。

  • 在 B.xsd 中,我使用“xsd:include”标签包含了 C.xsd,然后使用 C.xsd 中定义的复杂类型定义了一个 complexType。 )

  • 在 A.xsd 中,我使用“xsd:include”标签包含了 B.xsd,然后使用 B.xsd 中定义的复杂类型定义了一个 complexType。(具有我上面提到的相同标题)

我想生成如下所述的 JAXB 类。

  • 在 com.generate.packageA 包中生成 A.xsd 相关的 JAXB 类。

  • 在 com.generate.packageB 包中生成 B.xsd 相关的 JAXB 类。

  • com.generate.packageC 包中生成的与 C.xsd 相关的 JAXB 类。

【问题讨论】:

  • 您找到解决方案了吗?我正在尝试实现类似的东西,并希望有一个解决方案

标签: java xml jaxb jaxb2


【解决方案1】:

您可以从每个“包含”模式分别生成 JAXB 类到单独的包中,并利用 XJC 工具中可用的情节机制。

示例(来自 Stack Overflow 上给出的答案)

【讨论】:

  • 嗨@Blaise Doughan,感谢您的快速回复,但据我了解,以上所有链接都与在多个xsd 中使用多个命名空间相关联。可能是我遗漏了一些东西,您能否检查一下我对帖子所做的编辑并给我一些想法?谢谢。
  • 我尝试使用 .episode 文件。但是当我使用之前创建的 .episode 文件(使用 C.xsd)为 B.xsd 生成类时,它没有生成任何类。它甚至没有给我一个错误。
猜你喜欢
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多