Java XML 数据绑定是一种代替 XML 文档模型的强大机制。castor框架就是应用于此类功能的框架。

直接用代码说明:
 1.javabean
   
  • 这个类是公共的
  • 定义了公共的默认(没有参数)构造函数
  • 定义了公共的 getXsetX 方法访问属性(数据)值

    import java.util.ArrayList;
    import java.util.List;

    public class Bean {
        
        
    public Bean(){}
        
    private String name;
        
    private int age;
        
    private String addr;
        
    private int cod;
        
    private List list;

        
    public String getAddr() {
            
    return addr;
        }


        
    public void setAddr(String addr) {
            
    this.addr = addr;
        }


        
    public int getAge() {
            
    return age;
        }


        
    public void setAge(int age) {
            
    this.age = age;
        }


        
    public String getName() {
            
    return name;
        }


        
    public void setName(String name) {
            
    this.name = name;
        }


        
    public int getCod() {
            
    return cod;
        }


        
    public void setCod(int cod) {
            
    this.cod = cod;
        }


        
    public List getList() {
            
    if(list==null)
                list
    =new ArrayList();
            
    return list;
        }


        
    public void setList(List list) {
            
    this.list = list;
        }


    }


  • 2. 测试默认的数据绑定

    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    import org.exolab.castor.xml.Marshaller;
    import org.exolab.castor.xml.Unmarshaller;
    public class CastorTest {

        
    public static void main(String[] args) {
            Bean bean
    =new Bean();
            bean.setAddr(
    "gansu");
            bean.setAge(
    25);
            bean.setName(
    "can");
            bean.setCod(
    100);
            List list
    =new ArrayList();
            list.add(
    33);
            list.add(
    "haha");
            bean.setList(list);
            
    try {
                File file
    =new File("c:/castor.xml");
                
    if(!file.exists())
                    file.createNewFile();
                FileWriter fw
    =new FileWriter(file);
                Marshaller.marshal(bean, fw);
                
                FileReader reader 
    = new FileReader(file);

                Bean read 
    = (Bean) Unmarshaller.unmarshal(Bean.class, reader);

                System.out.println(read.getAddr());
                System.out.println(read.getCod());
                
    for (Iterator iter = read.getList().iterator(); iter.hasNext();) {
                    Object element 
    = (Object) iter.next();
                    System.out.println(element);
                    
                    
                }

            }
     catch (Exception e) {
                
    // TODO: handle exception
            }
    }

    }


    结果:

    <?xml version="1.0" encoding="UTF-8"?>
    <bean cod="100" age="25">
    <name>can</name>
    <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:java.lang.Integer">33</list>
    <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="java:java.lang.String">haha</list>
    <addr>gansu</addr>
    </bean>


  • 对于具有基本类型值的属性创建元素的一个属性(本例中只有 number 属性通过 getNumber() 方法公开为 int 值)。
  • 对于每个具有对象类型值的属性创建根元素的一个子元素(本例中的所有其他属性,因为它们是字符串)。