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