快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
d:sequence>        <xsd:element name="EndDateTime" type="AnyDateTimeType"/>        <xsd:element name="Duration" type="TimeCardDuration" minOccurs="0"/>       </xsd:sequence>       <xsd:element name="Duration" type="TimeCardDuration"/>      </xsd:choice>      ... <xsd:simpleType name="TimeCardDuration">  <xsd:union memberTypes="xsd:duration xsd:decimal"/> </xsd:simpleType>

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

时间:2012-01-14 IBM Dennis Sosnoski

模式修改

如果将 清单 10 顶部的 Javadoc 中嵌入的模式片段与清单底部的实际模式片段相比较,您将看到初始模式中的 union simpleType 引用在 Javadoc 版本中已经替换为 xs:string 引用。这是故意的,并且它在 CodeGen 所执行的若干种模式结构转换中具有代表性。诸如删除 <union> simpleType 及 simpleType 限制(而非 <xs:enumeration>)之类的转换都是被硬编码到 CodeGen 操作中的。其他转换都受自定义控制。不管使用哪种方法,Javadocs 中包括的模式片段总是显示转换后的模式,因为实际上用于生成代码的就是转换后的模式。

您将在教程的后几节中看到受自定义控制的更多类型的转换。

自定义 数据模型

本教程中先前的 示例 显示了一些简单的 CodeGen 自定义。现在,您已经了解了 CodeGen 如何处理带有默认设置的 HR-XML TimeCard 模式,我们接下来将研究一些更强大的自定义。

自定义数据模型

CodeGen 使用默认设置生成的数据模型代码有一些弱点。首先,模式类型名称全都以 Type 为结尾,并且这种情况延续到对应的生成的类名上,导致名称过长。通过模式名称空间生成的包名 org.hrxml.ns 是合理的,但是如果包名可以表明该数据模型专门用于 TimeCard 文档,那么效果会更好。

清单 11 显示了生成的数据模型类的另外一个缺点,其中 java.math.BigInteger 用于表示 xs:integer 类型。这是使用标准 Java 类时 xs:integer 的最精确表示,但是与简单的 int 原语或 java.lang.Integer 对象类型相比,BigInteger 并不好用。糟糕的是,即使使用 xs:int 会更恰当,人们也通常使用 xs:integer 类型编写模式,因此开发人员可能会在生成的代码中遇到 BigInteger 值。本例就是这种情况:GenderCode 允许的实际值全都是个位数(如清单底部的原始模式片段所示)。

清单 11. xs:integer 生成示例

/**
 * Schema fragment(s) for this class:
 * <pre>
 * <xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" type="xs:integer" 
 *  name="GenderCode"/>
 * </pre>
 */
public class GenderCode
{
  private BigInteger genderCode;

  /**
   * Get the ''GenderCode'' element value.
   *
   * @return value
   */
  public BigInteger getGenderCode() {
    return genderCode;
  }

  /**
   * Set the ''GenderCode'' element value.
   *
   * @param genderCode
   */
  public void setGenderCode(BigInteger genderCode) {
    this.genderCode = genderCode;
  }
}

 <xsd:simpleType name="GenderCodeType">
  <xsd:annotation>
   <xsd:documentation>Must conform to ISO 5218 - Representation of Huma

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号