如何为xjc编写外部绑定文件?

2022-09-02 14:02:21

JAXB xjc 的文档说:

-b 指定一个或多个要处理的外部绑定文件。(每个绑定文件必须有自己的“-b”开关。外部绑定文件的语法非常灵活。您可能有一个包含多个架构的自定义项的绑定文件,也可以将这些自定义项分解为多个绑定文件:

   xjc schema1.xsd schema2.xsd schema3.xsd -b bindings123.xjb

   xjc schema1.xsd schema2.xsd schema3.xsd 
         -b bindings1.xjb -b bindings2.xjb -b bindings3.xjb 

此外,架构文件和命令行上的绑定文件的顺序无关紧要。

但是,在哪里可以找到此“外部绑定文件”的文档呢?


答案 1

外部绑定文件记录在“定制 JAXB 绑定”页上 oracle.com

报价:

外部绑定自定义文件

通过包含绑定声明的外部文件对 JAXB 绑定进行的自定义采用如下所示的一般形式。

<jxb:bindings schemaLocation = "xs:anyURI">
   <jxb:bindings node = "xs:string">*
      <binding declaration>
   <jxb:bindings>
</jxb:bindings> 

schemaLocation 是对远程模式节点的 URI 引用,它是一个 XPath 1.0 表达式,用于标识架构中与给定绑定声明关联的架构节点的位置。例如,JAXB 绑定声明文件中的第一个模式位置/节点声明指定模式名称和根模式节点:

<jxb:bindings schemaLocation="po.xsd" node="/xs:schema"> 

后续的 schemaLocation/node 声明(例如,对于上述架构中名为 ZipCodeType 的简单类型元素),将采用以下形式:

<jxb:bindings node="//xs:simpleType[@name='ZipCodeType']"> 

另见;JAXB 编译器选项


有关外部绑定文件信息的另一个很好的资源是 oreilly。来自 oreilly 的一个示例绑定文件是:

报价:

清单 11.使用外部绑定文件

<jxb:bindings version="1.0" 
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
  jxb:extensionBindingPrefixes="xjc">
    <jxb:bindings schemaLocation="po4.xsd" node="/xs:schema">
        <jxb:globalBindings>
            <xjc:superClass name="com.syh.Shape"/>
            <xjc:serializable uid="12343"/>
        </jxb:globalBindings>
        <jxb:bindings node="//xs:element[@name='Widgets']//xs:complexType//xs:choice">
            <jxb:property name="Shapes"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

答案 2

推荐