快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
定义允许您通过两种方式控制 BindGen 在 XML 表示中使用的内容。首先,您可以轻松地使用 bean 样式的 getXXX()、setXXX() 和 isXXX() 访问方法,而不是直接访问字段。其次,您可以选择是列出需要在类的 XML 表示中包括的值,还是列出需要排除的值。清单 6 中的自定义演示了这两个技巧。

JiBX 1.2,第1部分: 从Java代码到XML模式(11)

时间:2012-01-14 IBM Dennis Sosnoski

单向转换

本教程使用 JiBX 进行 Java 数据结构与 XML 文档之间的双向转换。BindGen 还支持生成单向转换,在某些情况下生成单向转换可能会更方便。例如,值对象类通常是不可修改的,并且只定义 final 字段和读取(“get”)访问方法。这使得值对象类很难用于 BindGen 的双向转换。如果改为告诉 BindGen 生成仅执行输出的转换,它将轻松地处理您需要的字段或属性。要生成单向转换,请在自定义的根 <custom> 元素中使用 direction="output" 或 direction="input"。

清单 6 中的 <package> 元素将使用 property-access="true" 属性来告诉 BindGen,当确定要在 XML 表示中包含哪些值时,查找公共的非静态访问方法定义的 bean 样式的属性,而不是查找字段定义的 bean 样式的属性。此属性是继承自定义设置的一个例子,继承的自定义设置将应用到带有该属性的元素内嵌套的所有内容中。在 清单 6 示例中,设置将应用到两个嵌套的 <class> 元素中。它还将应用到包中的所有其他类中,即使其他类中没有 <class> 自定义元素。除了确定如何从类表示中找到值之外,property-access 设置还将控制如何通过生成的 JiBX 代码访问值 — 直接通过字段还是通过调用访问方法。

清单 6 中的第一个 <class> 元素将使用 includes="street1 street2 city state postCode country" 属性列出 BindGen 需要包含在 XML 表示中的类的特定值。清单中的第二个 <class> 元素将使用 excludes="description" 属性,该属性将列出要从 XML 表示中排除的值。由于对于值使用的是属性访问而非字段访问,因此这些名称与 get/set/is 访问方法所定义的属性相匹配。如果使用字段,则值名称将与字段名称相匹配。

custgen1 Ant 目标将使用 清单 6 中的自定义操作运行 BindGen。此目标是先前所示的 bindgen 目标的替代目标,因此要运行完整的构建,您最好使用 Ant 命令行:ant compile custgen1 bind。清单 7 显示了在此目标运行时生成的模式中的项目类型定义:

清单 7. 自定义模式输出片段

<xs:element name="item" minOccurs="0" maxOccurs="unbounded">
  <xs:complexType>
    <xs:sequence>
      <xs:element type="xs:string" name="id" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute type="xs:int" use="required" name="quantity"/>
    <xs:attribute type="xs:float" use="required" name="price"/>
  </xs:complexType>
</xs:element>

您可以从 清单 7 中看出,模式表示现在缺少了描述值,正如自定义指定的那样。

在使用此自定义时,您需要使用其他 XML 文档作为输入,因为不再使用初始 XML 中提供的 <description> 元素。Ant run1 目标将运行使用 data1.xml 作为输入并生成 out1.xml 作为输出的测试程序。您还可以用 custom1 Ant 目标运行从编译源代码到运行测试程序的整个过程。

JiBX 1.2,第1部分: 从Java代码到XML模式(12)

时间:2012-01-

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