快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
。当然,我们有一个流可以使用,还可以将从刚讨论过的方法中返回的元素作为文档根元素使用,来创建一个简单的文档。将这个元素和流传递到 XMLOutputter 中并调用 output() 方法来实现这个技巧。清单 3 中显示了这个方法;它由静态 marshall 方法调用,并使用我们刚讨论过的方法。

清单 3. 将各个细节与 output() 方法连接 /** * <p> * This will take a Java object instance, and convert it into an * XML document, and write that document to the supplied output stream. * </p> * * @param obj <code>Object</code> to convert to XML. * @param out <code>OutputStream</code> to write XML to. * @throws <code>IOException</code> when errors in output occur. */ private void writeXMLRepresentation(Object obj, OutputStream out) throws IOException { // Root Element is the start of recursion Element root = getXMLRepresentation(obj); Document doc = new Document(root); // Use 2 space indentation and line feeds XMLOutputter outputter = new XMLOutputter(" ", true); outputter.output(doc, out); }

就象任何好的代码一样,您应该放下理论,实际使用此代码。本文的其余部分讨论了在实际情况下,首先使用 Marshaller 类,然后使用整个 Marshaller 包。所以,让我们将这些类投入实际使用。

实践出真知

就象任何好的代码一样,您应该放下理论,实际使用此代码。本文的其余部分讨论了在实际情况下,首先使用 Marshaller 类,然后使用整个 org.enhydra.xml.binding 包。所以,让我们将这些类投入实际使用。

请记住,在本系列的第三部分中,测试 Unmarshaller 类时做的第一件事就是编写一个相当简单的类 TestMapper。尽管这个类只能对解包进行基本测试,但它却是开发数据绑定类过程中的关键部分。当然,在任何应用程序中,编码新功能后的第一件事就是针对该功能编写一个非常基本的测试。在将新功能放到一个大应用程序中的过程中(通常是件好玩的事),这通常只是处理隐蔽错误的好方法。而有一个测试类可以适用于每个应用程序类,有时适用于每个类的方法(是的,您没有看错),可以节省您的调试时间。有几种好的结构可以帮助自动执行这些类型的测试:JUnit 是一个很棒的免费测试包、JTest 是一个很好的需付费测试包。请您的公司投资购买一个测试包吧,长期使用后您会发现它物超所值。

在我鼓吹了实际应用的重要性之后,我将讨论这个测试类。加上它,可以测试 Unmarshaller 和 Marshaller 类。是的,我知道这破坏了我刚谈到的规则,但为了使本文的篇幅控制在 20 页以内,我只能这么做。清单 4 中显示了这个类,其中的更新可以帮助测试新的类。

清单 4. 测试 Marshaller import java.io.File; import org.enhydra.xml.binding.Marshaller; import org.enhydra.xml.binding.Unmarshaller; public class TestMapper { public static void main(String[] args) { System.out.println("Starting unmarshalling..."); try { System.out.println("\n\n......... Start of Unmarshaller test ............\n\n"); File file = new File("xml/example.xml"); Object o = Unmarshaller.unmarshall(file.toURL()); System.out.println("Object class: " + o.getClass().getName()); System.out.println("Casting to WebServiceConfiguration..."); WebServiceConfiguration config = (WebServiceConfiguration)o; System.out.println("Successful cast."); System.out.println(&q

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