对于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; } }