XStream入門示例DEMO

//POJO類:
public class XStreamTestPojo {
	public byte id;
	public short startLevel;
	public short endLevel;
	public byte item;

	// GETTER & SETTER
	public String toString() {
		return this.getId() + "==" + this.getStartLevel() + "=="
				+ this.getEndLevel() + "==" + this.getItem();
	}
}


//Test類:
public class XStreamTestUtil {

	public static void main(String[] args) {
		XStreamTestPojo pojo = new XStreamTestPojo();
		pojo.setId((byte) 1);
		pojo.setStartLevel((short) 1);
		pojo.setEndLevel((short) 9);
		pojo.setItem((byte) 3);
		//
		XStreamTestPojo pojo1 = new XStreamTestPojo();
		pojo1.setId((byte) 2);
		pojo1.setStartLevel((short) 10);
		pojo1.setEndLevel((short) 19);
		pojo1.setItem((byte) 2);
		//
		List<XStreamTestPojo> pojos = new ArrayList<XStreamTestPojo>();
		pojos.add(pojo);
		pojos.add(pojo1);

		// new XStreamTestUtil().writerXML(pojos);
		// new XStreamTestUtil().readXML();
		new XStreamTestUtil().addElement(pojo1);
	}

	public void writerXML(List<XStreamTestPojo> pojo) {
		XStream xStream = new XStream(new DomDriver()); // 不需要XPP3庫
		xStream.alias("TestPOJO", XStreamTestPojo.class);
		// xStream.aliasAttribute(XStreamTestPojo.class,"id","編號"); //放爲屬性
		xStream.aliasField("編號", XStreamTestPojo.class, "id"); // 設置別名
		try {
			FileWriter writer = new FileWriter("pojo.xml");
			xStream.toXML(pojo, writer);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("unchecked")
	public List<XStreamTestPojo> readXML() {
		XStream xStream = new XStream(new DomDriver()); // 不需要XPP3庫
		xStream.alias("TestPOJO", XStreamTestPojo.class); // 設置類別,或者無法讀取報com.thoughtworks.xstream
		xStream.aliasField("編號", XStreamTestPojo.class, "id"); // 對類對應,XML文件中的編號對應爲iD
		Reader reader = null;
		try {
			reader = new FileReader("pojo.xml");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		List<XStreamTestPojo> pojos = (List<XStreamTestPojo>) xStream
				.fromXML(reader);
		for (XStreamTestPojo pojo : pojos) {
			System.out.println(pojo);
		}
		return pojos;
	}

	/**
	 * API中我沒有找到可以直接在尾部添加Element的方法
	 * 
	 * @param pojo
	 *            欲添加的Element
	 *            Comment:因爲API中無直接添加的方法,所以:先讀出元素List,再在List的尾部添加元素,再重新寫入XML文件
	 *            缺點:當文件太大,太多的重複操作,導致資源消耗.
	 */
	public void addElement(XStreamTestPojo pojo) {
		List<XStreamTestPojo> pojos = this.readXML();
		pojos.add(pojo);
		this.writerXML(pojos);
	}
}

        
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章