WEB开发网
开发学院软件开发Java 使用 Quick 在 Java 对象和 XML 之间进行转换 阅读

使用 Quick 在 Java 对象和 XML 之间进行转换

 2010-03-25 00:00:00 来源:WEB开发网   
核心提示: 将原始文件与 清单 7 中显示的文件相比,您应该看到这些更改相当明显;它们都涉及将 XML 特性映射成正确的 Java 特性名,使用 Quick 在 Java 对象和 XML 之间进行转换(8),如源代码中所定义的那样(请参阅清单 4、 5和 6来复习一下), 创建 QIML您几乎已经完成了设置

将原始文件与 清单 7 中显示的文件相比,您应该看到这些更改相当明显;它们都涉及将 XML 特性映射成正确的 Java 特性名,如源代码中所定义的那样(请参阅清单 4、 5和 6来复习一下)。

创建 QIML

您几乎已经完成了设置工作;但仍需要执行最后一步。Quick 使用 QIML( Quick 内部标记语言(Quick Internal Markup Language))文件可以执行得更好。顾名思义,Quick 使用该内部格式以避免 QJML 文件的运行时编译、转换和处理。执行下列简单步骤,使 QJML 成为 Quick 可以更方便使用的格式:

sh cfgQjml2Qiml.sh -in=person.qjml -out=person.qiml

最后,为进一步改进性能,将这个基于文本的格式转换成可以编译的 Java 源文件(使用二进制对象总是比使用未编译的文本文件格式好):

sh cfgQiml2Java.sh -in=person.qiml -out=PersonSchema.java 
-class=PersonSchema -key=person.qjml

您真的不必对此处发生的事情太担心;它完全是特定于 Quick 的,实用程序会处理它们。现在,您应该编译这个创建的源文件(以及其余的 Java 源文件,如果还未创建的话)并确保将所有内容都添加到类路径中。这些步骤全部完成之后,您可以开始做一些数据绑定工作。

数据绑定

所有设置工作都完成之后,使用 Quick 框架将 XML 文档转换成 Java 字节码然后再转换回来的工作就很简单了。我将会使它的示例简单化;一旦您获得了基础知识,就可以得心应手地使用数据绑定,虽然我不知道您的用例,但我让您从样本代码中获取您所需要的信息并开始工作!请看一下 清单 8,然后我将解释主要的概念。

清单 8. 在 Java 中使用 Quick

import java.util.Iterator; 
// Quick imports 
import com.jxml.quick.QDoc; 
import com.jxml.quick.Quick; 
public class PersonTest { 
 public static void main(String[] args) { 
  try { 
   if (args.length != 2) { 
    System.err.println("Usage: java PersonTest [input file] [output file]"); 
    return; 
   } 
   // Initialize Quick 
   QDoc schema = PersonSchema.createSchema(); 
   // Convert input XML to Java 
   QDoc doc = Quick.parse(schema, args[0]); 
   // Get the result 
   Person person = (Person)Quick.getRoot(doc); 
   // Output block 
   System.out.println(" --------------- Person ------------------ "); 
   System.out.println(" First Name: " + person.getFirstName()); 
   System.out.println(" Last Name : " + person.getLastName()); 
   for (Iterator i = person.getAddressList().iterator(); i.hasNext(); ) { 
    Address address = (Address)i.next(); 
    System.out.println(" Address (" + address.getType() + "):"); 
    System.out.println("  " + address.getStreet()); 
    System.out.println("  " + address.getCity() + ", " + address.getState() + 
      " " + address.getZipCode()); 
   } 
   for (Iterator i = person.getPhoneNumberList().iterator(); i.hasNext(); ) { 
    PhoneNumber number = (PhoneNumber)i.next(); 
    System.out.println(" Phone Number (" + number.getType() + "):"); 
    System.out.println("  " + number.getNumber()); 
   } 
   // Add a new address 
   Address address = 
    new Address("work", "357 West Magnolia Lane", "Waco", "TX", "76710"); 
   person.getAddressList().add(address); 
   // Change a phone number 
   PhoneNumber number = (PhoneNumber)person.getPhoneNumberList().get(1); 
   number.setNumber("2547176547"); 
   // Write out modified XML 
   Quick.express(doc, args[1]); 
  } catch (Exception e) { 
    e.printStackTrace(); 
  } 
 } 
}

处理 Quick 的代码部分原来只有四行!必须先装入 QIML(已编译为 Java 字节码),以便让 Quick 知道哪些 XML 元素和属性变成哪些 Java 类和特性。通过生成的 PersonSchema 类的 createSchema() 方法(它是静态的)来完成这一任务。一旦装入该模式,就将它和输入文件传递给 Quick.parse() 方法,由该方法执行转换。从那里开始,您只需获取产生的 QDoc 的根元素并象使用任何其它 Java 对象那样使用它。在最后几行代码中再次用到了 Quick ,其中 express() 方法输出一个已修改的 XML 版本。非常简单,不是吗?

注: 不要 为输入和输出提供相同文件名,因为这样会覆盖原始数据,并且会发生各种不可预料的事情。

结束语

很好,您已经在这里看到了一些真正能让您感兴趣的功能。首先,数据绑定通常可以使编程任务变得非常简单,特别是当您需要将数据持久存储到某种类型的静态存储器(如本文中所示的文件)中时更是如此。另外,Quick 为您在自己的项目中完成这一任务提供了一种快速、简单的方法。研究一下使用 Quick 的代码块,了解您是否喜欢它。希望您喜欢,希望能在网上与您见面。

上一页  3 4 5 6 7 8 

Tags:使用 Quick Java

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接