JAXB(Java Architecture for XML Binding)
主要方法:Marshaller的marshal()方法,
// marshal 整理,编列,元帅的意思
/** * @author timeriver.wang * @date 2013-01-09 8:07:01 PM */ @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) public class Student { private String id; private String name; public String getId() { return id; } @XmlElement(name = "id") public void setId(String id) { this.id = id; } @XmlElement(name = "name") public String getName() { return name; } public void setName(String name) { this.name = name; } }
/** * @author timeriver.wang * @date 2013-01-09 8:07:09 PM */ //@XmlRootElement(namespace ="NAMESPACE" ) @XmlRootElement public class Teacher { private String id; private String name; private List<Student>students; @XmlAttribute (name = "tid") public String getId() { return id; } public void setId( String id ) { this.id = id; } @XmlElement(name = "tname") public String getName() { return name; } public void setName( String name ) { this.name = name; } @XmlElementWrapper(name="students") @XmlElement(name = "student") public List<Student> getStudents() { return students; } public void setStudents( List<Student> students ) { this.students = students; } }
/** * @author timeriver.wang * @date 2013-01-09 8:08:15 PM */ public class Test { private static String filePath = "D:/teacher.xml"; public static void main( String[] args )throws Exception { toXml(); toObj(); } public static void toXml()throws Exception { // organize Object(to be saved/persisted) Student stu = new Student(); stu.setId( "007" ); stu.setName( "zhouxingxing" ); Student stu2 = new Student(); stu2.setId( "008" ); stu2.setName( "dawenxi" ); List<Student>students = new ArrayList<Student>(); students.add( stu ); students.add( stu2 ); Teacher teacher = new Teacher(); teacher.setId( "101" ); teacher.setName( "daoyan" ); teacher.setStudents( students ); // JAXBContext jaxbContext = JAXBContext.newInstance( Teacher.class ); // marshal 整理,编列,元帅的意思 Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); // format, make every element keep a separate line. jaxbMarshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, true ); //output --> file File file = new File( filePath ); jaxbMarshaller.marshal( teacher, file ); //output --> console jaxbMarshaller.marshal( teacher, System.out ); } public static void toObj()throws Exception { File file = new File( filePath ); JAXBContext jaxbContext = JAXBContext.newInstance( Teacher.class ); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Teacher teacher = (Teacher) jaxbUnmarshaller.unmarshal( file ); System.out.println( teacher.getName() ); } }