JAXB学习笔记(三)
想知道生成的xml节点名字怎么换吗,如果你看下annotation @XmlElement的源码就明白了,看这个例子
?
package cn.uyunsky.blog.xml.demo3;import java.io.StringReader;import java.io.StringWriter;import java.util.Date;import javax.xml.bind.JAXBContext;import javax.xml.bind.JAXBException;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;/** * <p>把节点名字换换</p> */@XmlRootElement(name="PERSION")@XmlAccessorType(XmlAccessType.FIELD)public class Persion {@XmlElement(name="USER_ID")private Integer userid;@XmlElement(name="USER_NAME")private String username;@XmlElement(name="BIRTHDAY")private Date birthday;public Integer getUserid() {return userid;}public void setUserid(Integer userid) {this.userid = userid;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String toString() {StringBuilder builder = new StringBuilder();builder.append("Persion [userid=");builder.append(userid);builder.append(", username=");builder.append(username);builder.append(", birthday=");builder.append(birthday);builder.append("]");return builder.toString();}public static void main(String[] args) {try {JAXBContext jaxbContext = JAXBContext.newInstance(Persion.class);Persion persion = new Persion();persion.setUserid(112);persion.setUsername("就不告诉你");persion.setBirthday(new Date());Marshaller marshaller = jaxbContext.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);StringWriter writer = new StringWriter();marshaller.marshal(persion, writer);String xml = writer.getBuffer().toString();System.out.println(xml);Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();Object bean = unmarshaller.unmarshal(new StringReader(xml));System.out.println(bean);} catch (JAXBException e) {e.printStackTrace();}}}?输出结果
?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><PERSION> <USER_ID>112</USER_ID> <USER_NAME>就不告诉你</USER_NAME> <BIRTHDAY>2011-09-28T11:29:28.375+08:00</BIRTHDAY></PERSION>Persion [userid=112, username=就不告诉你, birthday=Wed Sep 28 11:29:28 CST 2011]
?
JAXB转换方式的实现通过annotation来处理,因此我们想要什么功能可以仔细研究下javax.xml.bind.annotation每个注释的意义,语感好的通过类名就能猜到了
java与E文一样需要好的语感的~
?