XML - JAXB示例

来源:互联网 发布:慧心莲禅服 淘宝 编辑:程序博客网 时间:2024/05/22 04:56

一、简介

    JAXB 即 Java Architecture for XML Binding,它提供一个绑定的编译器和一个运行时框架用来支持 XML 和 Java 对象的双向映射。


二、示例

    1、marshaller

        代码:

JAXBContext ctx = JAXBContext.newInstance(User.class);Marshaller marshaller = ctx.createMarshaller();User user = new User(1, "admin", new Role(1, "System", "System Management"));marshaller.marshal(user, System.out);
        结果:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><user><id>1</id><name>admin</name><role><id>1</id><name>System</name><note>System Management</note></role></user>

    2、unmarshaller

        代码:

JAXBContext ctx = JAXBContext.newInstance(User.class);Unmarshaller unmarshaller = ctx.createUnmarshaller();String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<user>" +"<id>1</id>" +"<name>admin</name>" +"<role>" +"<id>1</id>" +"<name>System</name>" +"<note>System Management</note>" +"</role>" +"</user>"; User user  = (User) unmarshaller.unmarshal(new StringReader(xml));System.out.println(user);

        结果:

    User [id=1, name=admin, role=Role [id=1, name=System, note=System Management]]


三、附录

import javax.xml.bind.annotation.XmlRootElement;/** * 实体, 需注解@XmlRootElement,否则异常javax.xml.bind.MarshalException */@XmlRootElementpublic class User {private int id;private String name;private Role role;    /** getter and setter **/}
public class Role {private int id;private String name;private String note;    /** getter and setter **/}
 
 
 

0 0