//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);
}
}
XStream入門示例DEMO
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.