快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
标记内的空白,元素之间的文本及注释)将丢失。在本例中,输入文档和输出文档之所以如此相似,部分原因是 清单 4 中的代码把输出格式设为在每个元素嵌套级别使用两个空格的缩进,这与输入文档相匹配。

细心的读者会注意到,在输出文档的项目清单部分(如清单 5 所示)中,输入与输出之间似乎 存在一个很大的差异:

清单 5. 输出文档的项目清单

<item quantity="1" price="5.99">
    <id>AC4983498512</id>
    <description>Left-handed widget</description>
  </item>
  <item quantity="2" price="9.5">
    <id>IW2349050499</id>
    <description>Right-handed widget</description>
  </item>
  <item quantity="1" price="8.95">
    <id>RC3000488209</id>
    <description>High-speed MP3 rewinder</description>
  </item>

如果将 清单 5 中用粗体显示的行与 清单 3 初始文档中的对应行相比较,您可以看到价格已经从 9.50 变为 9.5,小数点最后位的零被去掉了。可是,这并不是错误。价格值使用的表示是 float,并且根据 Java 和 XML 模式,小数点前面的零和后面的零对于 float 来说并不重要。

在本节中,您将了解如何自定义 BindGen 操作以控制数据的 XML 表示、更改名称及名称空间的样式以及控制模式结构的某些方面。

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

时间:2012-01-14 IBM Dennis Sosnoski

自定义 BindGen 操作

BindGen 支持对绑定和模式生成的各个方面进行大量自定义。要应用的自定义集将作为 XML 文档传递给 BindGen,该文档中拥有与 Java 代码结构对应的嵌套元素。清单 6 给出了简单示例:

清单 6. 简单的自定义示例

<custom>
  <package name="org.jibx.starter" property-access="true">
    <class name="Address" includes="street1 street2 city state postCode country"/>
    <class name="Item" excludes="description"/>
  </package>
</custom>

本例将处理单个 Java 代码包,因此 清单 6 仅使用 <custom> 根元素的一个 <package> 子元素。<package> 和 <class> 自定义元素将使用与所有被包含的 <package> 元素相关的名称属性,因此在 清单 6 示例中,每个 <class> 元素仅需要一个简单的类名。<package> 元素可以相互嵌套,因此如果跨越包的层次结构处理类,则使用嵌套的 <package> 元素处理所有选项将十分轻松。嵌套结构尤为便利,因为正如我稍后将在本节中讨论的那样,许多自定义属性都是通过元素嵌套继承的。可是,使用嵌套是可选的 — 如果需要,您也可以完全跳过 <package> 元素,并直接使用拥有完全限定类名的 <class> 元素。

使用 -c file-path 命令格式,把自定义文件作为命令行参数传递给 BindGen。自定义永远是可选的,并且您永远不需要使用自定义文件,除非需要更改默认的 BindGen 行为。

控制 BindGen 使用代码的方式

BindGen 通过对 Java 类的默认处理可以完成某种程度的工作,但是在没有用户指导的情况下,可以完成的工作是有限的。例如,默认处理是在 XML 表示中包括除了 static、transient 或 final 字段以外的所有字段。使用这种方法对于表示简单数据对象的类来说没有问题;但是,如果类包括状态信息或计算值,则最终的 XML 表示可能包括不想公开到类之外的值。

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