快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
配 清单 8 中所示的默认代码生成。choice-exposed="true" 将为状态变量添加 get 方法,使得所有这些内容可以公开访问。这将允许您轻松地使用 Java switch 语句以根据目前的状态执行不同的代码,而不再需要使用多条 if 语句。

这两个属性可以在任意级别的自定义中使用,允许您为最外层自定义中所有生成的代码轻松地设置行为,同时仍然保留根据具体情况执行其他操作的能力。

<xs:any> 和 mixed="true" 处理

和许多企业模式一样,HR-XML 模式将使用 <xs:any> 模式组件为数据创建扩展点,这些扩展点可以独立于原始模式,由用户定义。默认情况下,CodeGen 将使用 org.w3c.dom.Element 对象(如果 <xs:any> 中的 maxOccurs 值大于 1,则使用 Element 列表)处理 <xs:any> 模式组件。Element 对象可用于表示任意一个 XML 元素(包括所有属性、名称空间声明和内容),因此它将提供处理任何匹配模式定义的文档所需的所有灵活性。

清单 9 显示了匹配 清单 7 模式样例的 <xs:any> 组件的生成代码。由于 <xs:any> 使用 maxOccurs="unbounded",因此生成的代码将使用一个 Element 列表。

清单 9. <xs:any> 生成的代码样例

/**
 * ...
 * Schema fragment(s) for this class:
 * <pre>
 * <xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" mixed="true" 
 *  name="AdditionalDataType">
 *  <xs:sequence>
 *   <xs:any minOccurs="0" maxOccurs="unbounded" processContents="strict" 
 *    namespace="##any"/>
 *  </xs:sequence>
 *  <xs:attribute type="xs:string" name="type"/>
 * </xs:complexType>
 * </pre>
 */
public class AdditionalDataType
{
  private List<Element> anyList = new ArrayList<Element>();
  private String type;

  /**
   * Get the list of sequence items.
   *
   * @return list
   */
  public List<Element> getAny() {
    return anyList;
  }

  /**
   * Set the list of sequence items.
   *
   * @param list
   */
  public void setAny(List<Element> list) {
    anyList = list;
  }
  ...
}

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

时间:2012-01-14 IBM Dennis Sosnoski

清单 9 中模式定义的某些方面是被忽略的,或者只是由 CodeGen 处理了一部分。首先,封装的 <xs:complexType> 定义指定了 mixed="true",这意味着允许将字符数据与 <xs:any> 粒子所表示的元素相混合。CodeGen 所生成的数据模型没有空间来保存这类字符-数据内容,因此在文档被解组时,这些内容将被丢弃。其次,<xs:any> 将使用 processContents="strict",意味着实例文档中存在的所有元素都需要拥有自己的模式定义。CodeGen 将忽略此属性,尽管可能使用其他形式的 <xs:any> 处理(下面将讨论)得到类似的效果。CodeGen 还将忽略 <xs:any> 名称空间限制。清单 9 使用 namespace="##any",表示匹配 <xs:any> 的元素都不受名称空间的限制,但是举例来说,如果该值是 namespace="##other",则结果应当相同。

您可以在任意级别的自定义中使用 any-handling 自定义属性,选择处理 <xs:any> 的其他方式

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