最高效的XML解析方式-----Simple 简化 XML 解析
XML数据解析 ----是将数据文档解析成不同的格式。因为不同平台(软件)在做数据传递或数据文档共享的时候,同一数据文档可能在不同平台的 显示格式要求不同,这就出现了相对中立的语言(XML),来表示数据,给二者做转化。 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。 现在解析XML的方法越来越多,四种主流的方法,即:DOM、SAX、JDOM和DOM4J。使用过这4种方法,解析XML的时候,如果做过的肯定有体会,要实现一篇文档的解析[还不算多复杂的],使用最原始的方法,一行一行写代码,简直就是“体力活”。那有没有简单一些的方式呢?答案是肯定的。
----------Simple XML,借助第三方写好的jar包,完美实现了细节,提供读、写XML文档的2个方法read()和write(),导入工程即可使用。 Simple 是一个 Java 框架[],用于简化序列化和反序列化 XML 的过程。使用 Simple,开发人员可以简化(名字由此而来)将 简单老 Java 对象(POJO)转换成 XML 文档的过程 — 即所谓的序列化过程。Simple 也可促进相反的过 程:开发人员可以将 XML 文档转换成 POJO — 即所谓的反序列化过程。 Simple 它使用注解来支持序列化和反序列化过程。根据相应的 XML 文档应该如何出现,对 POJO 进行注解。一些字段被注解 为属性,另一些字段被注解为元素。类通常被注解为根元素。 使用 Simple 的优势
1、首先,它促进快速应用程序开发。Simple 是如此简单,它支持开发人员快速实现健壮的、使用 XML 序列化和反序列化的应用程序,无需完成长长的学习曲线以及付出繁重的开发劳动。 2、其次,Simple 不需要配置。前面已经提到,Simple 使用注解。这些注解取代了基于 XML 的配置文件(其他框架一般都有这样的配置文件)。 3、最后,Simple 只让使用它的应用程序增加少量的内存占用。Java 归档(Java Archive,JAR)文件只有 239 KB。Simple 也不依赖于一系列 其他 JAR 文件,而其他框架则通常不是这样的。
-Simple XML的使用:
下载归档文件,我上传的资源里有http://download.csdn.net/detail/ljheee/9481052;获得 Simple,解压文件之后,注意在 jar 目录中有一个 JAR 文件(simple-xml-2.7.1.jar)。在编译时和运行时,类路径中需要有这个 JAR 文件。
在main()方法里实例化一个 Persister 对象。就可调用read()和write()。该类是 Simple 框架的一部分,它实现了Serializer 接口。 具体案例如下,也可参阅http://blog.csdn.net/ljheee/article/details/50573226
.................................................................................................................................................................................................................................
package com.ljh.xml; (1)实体对象类---Book, import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; public class Book { @Attribute(name="id",required=false) private String isbn; //书号isbn @Element(required=false) private String title; //书名 @Element(required=false) private int price; //书的价格 @Element(required=false) private Author author; //书的作者--也是个实体类 public Book() { } public Book(String isbn,String title,int price) { super(); this.isbn = isbn; this.title = title; this.price = price; } public String getIsbn() { return isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public void setAuthor(Author author) { this.author = author; } @Override public String toString() { return "Book [author=" + author + ",isbn=" + isbn + ",price=" + price + ",title=" + title + "]"; } }
package com.ljh.xml; (2)(书的)作者类 import org.simpleframework.xml.Attribute; public class Author { @Attribute(required=false) private String name; //作者名 @Attribute(required=false) private String phone; //作者电话 public Author() { super(); } public Author(String name,String phone) { super(); this.name = name; this.phone = phone; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Override public String toString() { return "Author [name=" + name + ",phone=" + phone + "]"; } } package com.ljh.xml; (3)数目列表类----多个对象添加到列表中,一次读取该列表,实现高效 import java.util.ArrayList; import org.simpleframework.xml.*; import org.simpleframework.xml.ElementList; @Root public class BookList { @ElementList(inline=true) private ArrayList<Book> list; public BookList() { list = new ArrayList<Book>(); } public ArrayList<Book> getList() { return list; } public void add(Book b){ list.add(b); } @Override public String toString() { return "BookList [list=" + list + "]"; } }
package com.ljh.xml; (4)测试类:实例化一个Persister 对象,调用read()和write(),按指定的类型[Book]解析 import java.io.File; import org.simpleframework.xml.core.Persister; public class Test { /** * Write [entity Object] to XML * 把实体对象--写成xml格式文档 * @param persister */ public static void write(Persister persister) { Book bo = new Book("XX021","复活",250); bo.setAuthor(new Author("adf","15777")); Book bo1 = new Book("XX0212","死亡之巅",110); bo1.setAuthor(new Author("kk","189")); Book bo2 = new Book("XX0213","JVM解析",258); bo2.setAuthor(new Author("pou","142")); BookList booklist = new BookList(); booklist.add(bo); booklist.add(bo1); booklist.add(bo2); try { persister.write(booklist,new File("b.xml")); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * read XML to [entity Object] * 读取XML文件,解析成实体对象 * @param persister */ public static void read(Persister persister) { try { //读取File("b.xml"),解析成BookList.class类型 BookList blist = persister.read(BookList.class,new File("b.xml")); System.out.println(blist.getList()); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { //Persister序列化、持久化---simple-xml-2.7.1.jar里提供的[是其他人已经写好分装好的] Persister persister = new Persister();//实例化一个 Persister 对象 // write( persister); //写 read( persister); //读 } }
后记:XML解析还是需要理解其原理,并掌握其只要解析方法,Simple XML的方式最底层的实现也是通过原始方式,只不过集成封装,打包出来,方便后续使用。建议初学者还是理解XMLd的主要方法为主。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|