什么是 .episode 文件..?

2022-09-01 03:16:34

JAXB 中的 .episode 文件是什么?.?它是由 JAXB 生成的,还是我们操作的配置文件,以避免 JAXB 重新生成相同的类。.?


答案 1

注意:我是EclipseLink JAXB(MOXy)负责人,也是JAXB 2(JSR-222)专家组的成员。

.episode 文件由 XJC(XML Schema to Java)编译器生成。它是将架构类型与现有类相关联的架构绑定。当您有一个由其他架构导入的 XML 架构时,它很有用,因为它会阻止重新生成模型。下面是一个示例:

产品

<?xml version="1.0" encoding="UTF-8"?>
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/Product" 
    xmlns:tns="http://www.example.org/Product" 
    elementFormDefault="qualified">
    <element name="product">
        <complexType>
            <sequence>
                <element name="id" type="string"/>
                <element name="name" type="string"/>
            </sequence>
        </complexType>
    </element>
</schema>

由于多个 XML 架构导入 Product.xsd,因此我们可以利用单集文件,以便与 Product.xsd 对应的类仅生成一次。

xjc -d out -episode product.episode Product.xsd

ProductPurchaseRequest.xsd

下面是导入 Product.xsd 的 XML 架构的示例:

<?xml version="1.0" encoding="UTF-8"?>
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/ProductPurchaseRequest" 
    xmlns:tns="http://www.example.org/ProductPurchaseRequest"
    xmlns:prod="http://www.example.org/Product" 
    elementFormDefault="qualified">
    <import namespace="http://www.example.org/Product" schemaLocation="Product.xsd"/>
    <element name="purchase-request">
        <complexType>
            <sequence>
                <element ref="prod:product" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
    </element>
</schema>

当我们从这个XML模式生成类时,我们将引用我们从Product.xsd生成Java类时创建的情节文件。

xjc -d out ProductPurchaseRequest.xsd -extension -b product.episode

ProductQuoteRequest.xsd

下面是导入 Product.xsd 的 XML 架构的另一个示例:

<?xml version="1.0" encoding="UTF-8"?>
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/ProductQuoteRequest" 
    xmlns:tns="http://www.example.org/ProductQuoteRequest" 
    xmlns:prod="http://www.example.org/Product" 
    elementFormDefault="qualified">
    <import namespace="http://www.example.org/Product" schemaLocation="Product.xsd"/>
    <element name="quote">
        <complexType>
            <sequence>
                <element ref="prod:product"/>
            </sequence>
        </complexType>
    </element>
</schema>

同样,当我们从此 XML 模式生成类时,我们将引用从 Product.xsd 生成 Java 类时创建的 episode 文件。

xjc -d out ProductQuoteRequest.xsd -extension -b product.episode

详细信息


答案 2

我将添加一些琐事。

  • 实际上,文件只是普通的绑定文件(这就是为什么它们与 )。.episodexjc -b
  • 它们可以使用特殊的内置插件生成(就是这样)。-episode
  • 如果放在 JAR 下的路径下,你可以做 - XJC 将扫描 JAR 的剧集文件,然后自动使用 as 绑定文件。META-INF/sun-jaxb.episodexjc b.xsd a.jar
  • 所有这些美都可以与Maven(maven-jaxb2-plugin)一起使用。但是,在更高版本中,即使没有剧集,您也可以使用 JAR 工件中的绑定文件。

推荐