对于xml与java 对象的映射有很多方法,不错一般是第三方jar包,比如JAXB,digester等,实际上在JDK中式有方法直接实现的,不过相信绝大部分用Java的人不大留意他们,这绝对是被埋没的好东西,java.beans.XMLDecoder/XMLEncoder简单易用,不需要特殊配置,不需要dtd, xsd文件,对于一般的xml与java 的映射关系是可以使用它们的。
简单的使用方法:
package com.changyou.xml.test;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.changyou.myDataItems.model.AnalysisModel;
import com.changyou.myDataItems.model.ConditionField;
public class TestStudent {
/**
* <P>Title: main </P>
* <P>Description: </P>
* @param args
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
java.io.File file = new java.io.File("student.xml");
if(!file.exists()){
file.createNewFile();
}
Student s1 = new Student();
s1.setNameString("卞哲");
s1.setAge(10);
java.io.BufferedOutputStream oop = new java.io.BufferedOutputStream(new java.io.FileOutputStream(file));
java.beans.XMLEncoder xe = new java.beans.XMLEncoder(oop);
xe.flush();
//写入xml
xe.writeObject(s1);
xe.close();
oop.close();
//读取xml文件
java.beans.XMLDecoder xd = new java.beans.XMLDecoder(new BufferedInputStream(new FileInputStream(file)));
Student s2 = (Student) xd.readObject();
xd.close();
System.out.println("name: "+s2.getNameString());
System.out.println("age :"+s2.getAge());
}
}
执行结果:
name: 卞哲
age :10
模型类:
package com.changyou.xml.test;
public class Student {
private String nameString;
private int age;
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}