JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项能够根据XML Schema产生Java类的技术。该过程当中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容从新写到XML实例文档。从另外一方面来说,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。java
程序中简单使用app
/** * Created by lv on 2016/4/3. */ public class Person { private String name; private LocalDate birthday; public String getName() { return name; } public void setName(String name) { this.name = name; } //注意,此处使用自定义适配器来解析date类型的字段 @XmlJavaTypeAdapter(LocalDateAdapter.class) public LocalDate getBirthday() { return birthday; } public void setBirthday(LocalDate birthday) { this.birthday = birthday; } } @XmlRootElement(name = "persons") public class PersonListWrapper { private List<Person> persons; @XmlElement(name = "person") public List<Person> getPersons() { return persons; } public void setPersons(List<Person> persons) { this.persons = persons; } } //定义适配器 /** * Created by lv on 2016/4/3. */ public class LocalDateAdapter extends XmlAdapter<String,LocalDate>{ @Override public LocalDate unmarshal(String v) throws Exception { return LocalDate.parse(v); } @Override public String marshal(LocalDate v) throws Exception { return v.toString(); } }
程序中使用:ide
/** * 从xml文件中加载数据 * @param file */ public void loadPersonDataFromFile(File file) { try { JAXBContext jaxbContext = JAXBContext.newInstance(PersonListWrapper.class); Unmarshaller um = jaxbContext.createUnmarshaller(); PersonListWrapper wrapper = (PersonListWrapper) um.unmarshal(file); } catch (JAXBException e) { e.printStackTrace(); } } /** * 保存数据到xml文件中 * @param file */ public void savePersonDataToFile(File file){ try { JAXBContext context = JAXBContext .newInstance(PersonListWrapper.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); PersonListWrapper wrapper = new PersonListWrapper(); wrapper.setPersons(personData); m.marshal(wrapper, file); } catch (JAXBException e) { e.printStackTrace(); } }