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 值)。
  • 對于每個具有對象類型值的屬性創建根元素的一個子元素(本例中的所有其他屬性,因為它們是字符串)。