SimpleXml项目

最近在做一些XML和JAVA类相互转换的过程中发现了这个开源项目 SimpleXml。

android开发框架中已经集成了该框架。

相关介绍的文章大家也可以参考下使用 Simple 简化 XML 序列化

一、简单的例子

代码清单1:

一个普通的JavaBean

import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
@Root
public class Student {
	@Attribute
	private int stu_id;
	@Element 
	private String stu_no;
	@Element 
	public String stu_type;
	@Element 
	private String stu_name;
	@Element 
	private String stu_class;
	@Element
	private String stu_year;
	

	public String getStu_type() {
		return stu_type;
	}
	public void setStu_type(String stu_type) {
		this.stu_type = stu_type;
	}
	public String getStu_class() {
		return stu_class;
	}
	public void setStu_class(String stu_class) {
		this.stu_class = stu_class;
	}
	public String getStu_year() {
		return stu_year;
	}
	public void setStu_year(String stu_year) {
		this.stu_year = stu_year;
	}
	public String getStu_no() {
		return stu_no;
	}
	public void setStu_no(String stu_no) {
		this.stu_no = stu_no;
	}
	public int getStu_id() {
		return stu_id;
	}
	public void setStu_id(int stu_id) {
		this.stu_id = stu_id;
	}
	public String getStu_name() {
		return stu_name;
	}
	public void setStu_name(String stu_name) {
		this.stu_name = stu_name;
	}

}

代码清单2:

public class SimpleXMLTest {
	/**
	 * 测试创建xml文档
	 */
	@Test 
	public void testCreateXml() {
		
		try {
			Serializer  serializer= new Persister();
			Student stu = new Student();
			stu.setStu_id(1);
			stu.setStu_no("201205001");
			stu.setStu_type("经济学");
			stu.setStu_name("慕容雪");
			stu.setStu_class("005班");
			stu.setStu_year("2012");
			File result = new File("./src/student.xml");
		   serializer.write(stu, result);
		} catch (Exception e) {
			
			e.printStackTrace();
		}
	}
}

执行后即可创建一个student.xml文档,内容如下:

<student stu_id="1">
   <stu_no>201205001</stu_no>
   <stu_type>经济学</stu_type>
   <stu_name>慕容雪</stu_name>
   <stu_class>005班</stu_class>
   <stu_year>2012</stu_year>
</student>

是不是很简单?和那些Dom4j,Parser相比,更容易操作。

读取XML也变得异常简单

@Test
	public void testReadXML(){
		
		
		try {
			Serializer serializer =new Persister();
			File source = new File("./src/student.xml");
			Student stu=serializer.read(Student.class, source);
			System.out.println(stu.getStu_name());
			System.out.println(stu.getStu_no());
			System.out.println(stu.getStu_type());
			System.out.println(stu.getStu_year());
			System.out.println(stu.getStu_class());
			System.out.println(stu.getStu_id());
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

相比那些要获取节点,获得元素,操作各种Dom模型的传统方式,是不是清晰明了了许多。

目前我正在按照官方文档的Demo 测试对各种数据对象的支持.例子在最后共享在115网盘。

Demo文档还是比较丰富的,建议大家通读一遍。

二、总体感觉:

1.上手很快

2.操作简便易懂

3.基于注解实现,零配置(现在貌似零配置很流行)

4.可以自定义模板XML(嘻嘻,和velocity不一样的)

5.支持序列化和反序列化

6.泛型支持比较好

缺点:

1.必须要依赖POJO类 

2.只能生成XML

三、使用要点

在simpleXml中这个类很重要

 Serializer接口 及其实现子类Persister

Serializer serializer=new Persister();

将POJO类写入XML

 serializer.write(Object object, File file);

读取XML内容

Object object=serializer.read(Object.class, File file);

几种常用注解
//XML的根元素,一般在类上面声明
@Root 

//对XML属性的标识	
@Attribute 

//对XML中元素的标识	
@Element 

//对数组对象的标识
@ElementArray(entry="add")
//对XML中集合属性的标识
 @ElementList

当然这仅仅是我初步使用simpleXml的一些心得,下次对序列化,持久化对象,以及模板xml的创建继续深入研究。 

不足之处,还请各位大牛批评指正!

你可能感兴趣的:(xml解析,simplexml,xml序列化)