最高效的XML解析方式-----Simple 简化 XML 解析

                                                                        最高效的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的主要方法为主。



  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值