快速业务通道

从XML到Java代码的数据绑定之四 从无用的字符到有用的代码段 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
ject String objectName = BindingUtils.initialLowercase(objectClass.getName()); // If this is an "Impl" class, remove that from the name int index = -1; if ((index = objectName.indexOf("Impl")) != -1) { objectName = objectName.substring(0, index); } Element element = new Element(objectName); Method[] methods = objectClass.getMethods(); for (int i=0; i<methods.length; i++) { // Only want accessor methods, but not the getClass() method in Object Method method = methods[i]; if ((method.getName().startsWith("get")) && (!method.getName().equals("getClass"))) { // Get the value for this method try { Object o = method.invoke(obj, new Object[] { }); // For the name, remove the "get" and lower the initial letter String propertyName = BindingUtils.initialLowercase(method.getName().substring(3)); // Determine if it''s primitive by seeing if it''s a java.lang type if (o.getClass().getName().startsWith("java.lang.")) { // If it''s a primitive, add as an attribute element.addAttribute(propertyName, o.toString()); } else { // ... otherwise, recurse and add new element as child element.addContent(getXMLRepresentation(o)); } } catch (IllegalAccessException e) { throw new IOException(e.getMessage()); } catch (InvocationTargetException e) { throw new IOException(e.getMessage()); } } } return element; }

可以看到,代码非常简单。首先,获取 Java 类的名称。这个名称将变成正在构造的 XML 表示的元素名称。BindingUtils 中一个新的实用程序方法用于将此名称转换成以小写字母开头的名称。(标准 XML 名称都以小写字母开头。)在 参考资料 节中可以下载更新的 BindingUtils 类,以及代码包的其余部分。另外,如果类是 Impl 类,将除去名称的 "Impl" 部分。请记住,在本系列的第三部分中,类就是接口(如 WebServiceConfiguration)和实现(如 WebServiceConfigurationImpl)。此外,这是标准编程惯例,并且该方法将在普通情形中起作用。

一旦元素名称就绪,则必须获取属性。每个属性都应该是字段名称和字段的值。将任何复杂对象(非 Java 原语)转换成嵌套元素。要获取此数据,可以使用反射来获取对象的所有可用方法。您只需要关心读方法(以 "get" 开头);其余可以忽略,包括从 java.lang.Object 继承的 getClass() 方法。然后,(再次)使用反射来调用方法,获取它的值。最后,可以再使用 BindingUtils 类从其方法派生出字段名称。因此,方法 getVersion() 将导致创建一个叫做 "version" 的属性,它的值通过调用 getVersion() 方法产生。

您将注意到以上最后要指出的是字段是 Java 原语(其中类在 java.lang包中)还是嵌套对象。前一种情况下,属性添加到整个元素。后一种情况下,将发生递归并创建一个子元素。一旦以这种方式处理了每个读方法,生成的 JDOM 就返回到调用程序。一旦展开了递归,其结果就是顶级 Java 对象的完整的 XML 表示,它不能用作 XML 文档的根元素。

从XML到Java代码的数据绑定之四 从无用的字符到有用的代码段(3)

时间:2010-12-02

完成接触

只需一点努力,您就学会了打包代码。所剩下的就是在输入方法和递归方法之间的缝隙之上建立桥梁。使用 JDOM 输出类 org.jdom.output.XMLOutputter 可以很容易就跨越这个缝隙。这个类使用 JDOM Document 和 OutputStream,输出 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号