JAXBContext学习笔记(1)

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
 * Created by Administrator on 2014-05-14.
 */
public class AutoBean{
    public static void main(String[] args) throws JAXBException {
        JAXBContext jaxbContext =JAXBContext.newInstance(SimpleObject.class);
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_ENCODING,"utf-8");//编码格式
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);//是否省略xml头信息(<?xml version="1.0" encoding="utf-8" standalone="yes"?>)
        SimpleObject people = new SimpleObject();
        marshaller.marshal(people, System.out);
    }
}
@XmlRootElement
class SimpleObject{
//    @XmlElement
    public String publicS="publicS";
//    @XmlElement
    protected String protectedS="protectedS";
    @XmlElement
    String defaultS="defaultS";
//    @XmlElement
    private String privateS="privateS";
//    public String getPublicS() {
//        System.out.println("getPublicS");
//        return publicS;
//    }
//
//    public void setPublicS(String publicS) {
//        System.out.println("setPublicS");
//        this.publicS = publicS;
//    }
//    public String getProtectedS() {
//        System.out.println("getProtectedS");
//        return protectedS;
//    }
//
//    public void setProtectedS(String protectedS) {
//        System.out.println("setProtectedS");
//        this.protectedS = protectedS;
//    }
//
//    public String getDefaultS() {
//        System.out.println("getDefaultS");
//        return defaultS;
//    }
//
//    public void setDefaultS(String defaultS) {
//        System.out.println("setDefaultS");
//        this.defaultS = defaultS;
//    }
//
    public String getPrivateS() {
        System.out.println("getPrivateS");
        return privateS;
    }
    public void setPrivateS(String privateS) {
        System.out.println("setPrivateS");
        this.privateS = privateS;
    }
}

按照上面的代码,进行不同的注释可以发现

如果一个属性书public,则会进入xml文件,其他不会

如果一个属性加有@XmlElement标记,则会进入xml文件,即使是private

如果有getter,则getter会被调用(会被调用三次?!!!)

如果通过属性和getter都可以访问则会报错,这么说来对于pojo可以直接用,无需加上注释

你可能感兴趣的:(JAXBContext学习笔记(1))