快速业务通道

JiBX 1.2,第2部分: 从XML模式到Java代码(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
定义 CodeGen 以控制通过简单模式生成的代码结构的基础知识。

简单自定义示例

CodeGen 支持在代码和绑定生成的许多方面进行丰富的自定义。要应用的自定义集将作为 XML 文档传递给 CodeGen,其中包括与模式或模式组件相关的嵌套元素。清单 5 给出了一个简单示例:

清单 5. 简单自定义示例

 
<schema prefer-inline="true" show-schema="false" enumeration-type="simple"
 generate-all="false" includes="order item"/>

清单 5 自定义包含单个无名称空间的模式元素,以及针对特定自定义的几个不同属性(到目前为止,您只是在使用单个模式定义,因此可以使用这种非常简单的自定义形式。稍后在本教程中,您将看到使用多个模式的自定义示例)。第一个自定义属性 — prefer-inline="true" — 将告诉 CodeGen 内联只引用一次的模式定义,而不是执行将其保留为单独类的默认行为。第二个属性 — show-schema="false" — 将阻止在类 Javadoc 中嵌入模式定义。enumeration-type="simple" 将生成简单的类型安全枚举而非 Java 5 枚举。

最后一对属性将一起工作。默认情况下,CodeGen 将为指定为输入的模式中的每个全局类型定义都生成一个单独的顶级类,并且在为每个 complexType 生成的 JiBX 绑定中生成对应的抽象映射。generate-all="false" 属性将更改这种默认行为,只显式地生成特别包括的或引用自 included 类型的那些 complexType。随后,includes="order item" 属性将给出要生成的名称,选择这些名称以保持与测试程序的兼容性 — 需要 <order> 元素,原因是它是实例文档的根元素,并且需要 complexType 项,因为测试程序期望在计算订单总数时找到此类型的独立顶级类。

通过使用 Ant custgen 任务而非 codegen 任务(或者只使用 full 任务,该任务将运行完整的 clean custgen compile bind run 目标序列),您可以尝试这些自定义。清单 6 显示了生成的代码片段,您可以将其与 清单 2 所示的默认生成的代码相比较。除了简化的类 Javadoc 之外,最大的差别是 Customer 类现在是内联的,而 Shipping 类现在是使用自定义的类型安全枚举类的内部类。

JiBX 1.2,第2部分: 从XML模式到Java代码(一)(8)

时间:2012-01-14 IBM Dennis Sosnoski

清单 6. 用自定义生成的代码

 
/**
 * Order information.
 */
public class Order
{
  private long orderNumber;
  private long customerCustomerNumber;
  private String customerFirstName;
  private String customerLastName;
  private Address billTo;
  private Shipping shipping;
  private Address shipTo;
  private List<Item> itemList = new ArrayList<Item>();
  private Date orderDate;
  private Date shipDate;
  private Float total;
  ...
  /**
   * Supported shipment methods. The "INTERNATIONAL" shipment methods can only be used
    for orders with shipping addresses outside the U.S., and one of these methods is 
    required in this case.
   */
  public static class Shipping
  {
    private final String value;
    public static final Shipping STANDARD_MAIL = new Shipping(
        "STANDARD_MAIL");
    public static final Shipping PRIORITY_MAIL = new Shipping(
     

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号