使用JAXB(Java Architecture for XML Binding)Context可以轻松实现Java对象和XML文档之间的转换,其过程主要包括以下几个步骤:
- 定义Java对象,使用注解的方式描述对象与XML元素的映射关系
- 创建JAXBContext实例
- 使用JAXBContext实例创建Marshaller和Unmarshaller对象,分别用于将Java对象转换成XML文档和将XML文档转换成Java对象
- 进行对象和文档之间的转换
下面通过两个示例说明JAXBContext的使用。
示例1:将Java对象转换成XML文档
假设我们有以下的Student类:
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Student {
private int id;
private String name;
private int age;
public Student() {}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@XmlAttribute
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我们可以看到,在类前面使用了@XmlRootElement注解,表示该类是一个根元素,同时使用了@XmlAttribute和@XmlElement注解,表示类属性和XML元素之间的映射关系。
下面是将Student对象转换成XML文档的示例代码:
public static void objectToXml(Student student) throws JAXBException {
// 创建JAXBContext实例
JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);
// 创建Marshaller对象
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
// 将Java对象转换成XML文档
marshaller.marshal(student, System.out);
}
该例中,我们首先创建JAXBContext实例,并传入Student类参数,然后使用createMarshaller()方法创建Marshaller对象,最后调用marshal()方法将student对象转换成XML文档并输出到控制台。
示例2:将XML文档转换成Java对象
假设我们有以下的XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<Student id="100">
<name>Tom</name>
<age>18</age>
</Student>
我们可以创建以下Unmarshaller示例代码:
public static void xmlToObject(File file) throws JAXBException {
// 创建JAXBContext实例
JAXBContext jaxbContext = JAXBContext.newInstance(Student.class);
// 创建Unmarshaller对象
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
// 将XML文档转换成Java对象
Student student = (Student) unmarshaller.unmarshal(file);
System.out.println(student);
}
在该示例中,我们首先同样创建JAXBContext实例,并传入Student类参数,然后使用createUnmarshaller()方法创建Unmarshaller对象,最后调用unmarshal()方法将XML文档转换成Java对象,并输出到控制台。
以上就是使用JAXBContext轻松实现Java和xml的互相转换方式的完整攻略,希望能对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用JAXBContext轻松实现Java和xml的互相转换方式 - Python技术站