JiBX 1.2,第2部分: 从XML模式到Java代码(二) - 编程入门网
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |