一、简介
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
*/
@XmlRootElement
public 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 **/
}