快速业务通道

从XML到Java代码的数据绑定之二 从XML数据创建类 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
uot;number"> <simpleType base="integer"> <minExclusive value="0" /> <maxInclusive value="32767" /> </simpleType> </attribute>      <attribute name="protected" type="string" /> </complexType> </element> <element name="document"> <complexType> <attribute name="root" type="string" /> <attribute name="index" type="string" /> <attribute name="error" type="string" /> </complexType> </element> </complexType> <element name="webServiceConfiguration" type="WebServiceConfiguration" /> </schema>

从XML到Java代码的数据绑定之二 从XML数据创建类(6)

时间:2010-12-02

清单 6说明了number属性的类型, 并且在用红色强调的几行中指定了值的合法范围(1 到 32,767)。当前版本的 SchemaMapper 将忽略这些附加声明。从 schema 创建 Java 接口和实现类时,没有必要处理 XML schema 中的 minXXX 和 maxXXX 关键字,但它们可以增加相当多的附加验证。

请查看清单 7 中的代码示例,这些代码是可在实现类中生成的代码,以确保只有 schema 指定范围中的值可以作为变量。

清单 7. 带范围检查的生成代码

public class PortTypeImpl implements PortType { private String protocol; private int number; private String protected;       public void setNumber(int number) { if ((number > 0) && (number <= 32767)) { this.number = number; } else { throw IllegalArgumentException("Argument must be greater than 0 and less than or equal to 32767"); } }      public int getNumber() { return number; } public void setProtocol(String protocol) { this.protocol = protocol; } public String getProtocol() { return protocol; } public void setProtected(String protected) { this.protected = protected; } public String getProtected() { return protected; } }

如果对类提供了非法值,那么清单 7 中的生成代码块将抛出一个运行时异常,这样既确保了类型安全性又确保了范围安全性。

可以很方便地将类似于清单 6 和清单 7 中的增强部分添加到我提供的基本代码中,因为本文中的所有代码完全都是开放源码。您也许还想加入 Enhydra 体系结构工作组邮件发送清单,在该清单中维护和讨论了该代码的未来版本和修订本。可以从 Enhydra Web 站点上加入该清单,列在本文的 参考资料中。

总结

目前为止,应该已经了解什么是数据绑定。已知道使用数据绑定的原因,特别是配置信息。已经掌握如何创建 XML schema 和配置 Web 容器服务的 XML 实例文档,而且我们已经详细讨论了 org.enhydra.xml.binding.SchemaMapper 类。使用这个类,您可以创建 Java 接口和(该接口的)实现,它将管理从 XML 文档创建的 Java 实例。还知道如何将约束从 XML schema 映射到 Java。

现在,已经可以进入下一部分。在下一部分中,将开始把 XML 文档实际转换为 Java 对象的过程,其中 Java 对象是生成类的实例。下一篇文章将说明如何完成这个过程,及其逆向过程,以及 org.enhydra.xml.binding.Unmarshaller 和 org.enhydra.xml.binding.Marshaller 类。这两个类将磁盘上文本的 XML 格式数据移到内存中的 Java 表示,然后再移回来。

希望您能喜欢 XML schema 生成类,下次再见!

以上所有源码均

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