Java使用JAXB(Java Architecture for XML Binding)操作XML,可以在Java对象和XML之间进行快速、方便的转换。下面是使用JAXB操作XML的完整攻略。
基础准备
使用JAXB需要按照以下步骤进行准备:
1. 引入JAXB依赖
在Maven项目中,需要在pom.xml文件中添加以下依赖:
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0.1</version>
</dependency>
2. 构建Java对象
使用JAXB操作XML,需要构建Java类来表示XML根元素以及子元素。可以通过使用@XmlRootElement、@XmlElement等注解将Java类映射为XML节点。
例如,如果有一个Person类,表示一个人的信息:
@XmlRootElement
public class Person {
private String name;
private int age;
private String gender;
// getter and setter
}
那么在XML中,就可以通过以下方式表示一个Person对象:
<person>
<name>张三</name>
<age>20</age>
<gender>男</gender>
</person>
实现JAXB操作XML
1. 将Java对象转为XML文本
下面是一个将Java对象转为XML文本的示例:
public class JAXBUtil {
public static String convertToXml(Object obj) throws JAXBException {
StringWriter writer = new StringWriter();
Marshaller marshaller = JAXBContext.newInstance(obj.getClass()).createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(obj, writer);
return writer.toString();
}
}
该方法将一个Java对象转换为一个XML文本字符串。其中,使用JAXBContext.newInstance()方法创建JAXB上下文,然后就可以使用Marshaller将对象转换为XML文本。在转换过程中,可以设置编码和格式化选项。
例如,如果有一个Person对象:
Person person = new Person();
person.setName("张三");
person.setAge(20);
person.setGender("男");
那么可以使用以下代码将其转换为XML文本:
String xml = JAXBUtil.convertToXml(person);
System.out.println(xml);
输出结果:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>张三</name>
<age>20</age>
<gender>男</gender>
</person>
2. 将XML文本转为Java对象
下面是一个将XML文本转为Java对象的示例:
public class JAXBUtil {
public static <T> T convertToJava(String xml, Class<T> clazz) throws JAXBException {
Unmarshaller unmarshaller = JAXBContext.newInstance(clazz).createUnmarshaller();
StringReader reader = new StringReader(xml);
return (T) unmarshaller.unmarshal(reader);
}
}
该方法将一个XML文本字符串转换为一个Java对象。其中,使用JAXBContext.newInstance()方法创建JAXB上下文,然后就可以使用Unmarshaller将XML文本转换为Java对象。
例如,如果有以下XML文本:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<person>
<name>张三</name>
<age>20</age>
<gender>男</gender>
</person>
那么可以使用以下代码将其转换为Person对象:
Person person = JAXBUtil.convertToJava(xml, Person.class);
System.out.println(person.getName());
输出结果:
张三
示例说明
下面是两个示例,用于说明如何使用JAXB操作XML。
示例1. 将Java对象转换为XML文本
假设有一个Student类,表示一个学生的信息:
@XmlRootElement
public class Student {
private String name;
private int age;
private String gender;
private String school;
// getter and setter
}
现在需要将一个Student对象转换为XML文本。可以使用以下代码:
Student student = new Student();
student.setName("李四");
student.setAge(18);
student.setGender("女");
student.setSchool("XX中学");
String xml = JAXBUtil.convertToXml(student);
System.out.println(xml);
输出结果:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
<name>李四</name>
<age>18</age>
<gender>女</gender>
<school>XX中学</school>
</student>
示例2. 将XML文本转换为Java对象
假设有以下XML文本,表示一个学生的信息:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<student>
<name>李四</name>
<age>18</age>
<gender>女</gender>
<school>XX中学</school>
</student>
现在需要将该XML文本转换为一个Java对象。可以使用以下代码:
Student student = JAXBUtil.convertToJava(xml, Student.class);
System.out.println(student.getName());
输出结果:
李四
以上就是使用JAXB操作XML的完整攻略,以及两个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java使用jaxb操作xml示例 - Python技术站