如何将java对象转化为XML字符串
将java对象转化为XML字符串,可以使用Java的XML操作库JAXB,具体操作步骤如下:
主要分为以下几步:
1、创建JAXBContext对象,用于映射Java类和XML。
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);
2、创建Marshaller对象,用于将Java对象序列化为XML。
Marshaller marshaller = jaxbContext.createMarshaller();
3、配置Marshaller参数,例如设置XML输出格式、是否格式化输出等。
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
4、调用Marshaller的marshal方法将java对象序列化为XML,并存储到ByteArrayOutPutStream(可以将数据写入到内存中的输出流)
ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
marshaller.marshal(object, dataStream);
5、转化为String输出
return dataStream.toString("UTF-8");
举个例子
假设有一个java类Student,如下:
(注意:需要在要转化的XML类上添加如下注解@XmlRootElement是JAXB提供的一个注解,用于将Java类映射为XML的根元素。当一个Java类需要被序列化为XML时,可以使用该注解来指定根元素的名称、命名空间等信息。)
@XmlRootElement(name = "student")
public class Student {
private String name;
private Integer age;
public String getName() {
return name;
}
public Student() {
}
public class practice1 {
public synchronized static String getXmlWithoutHeader(Object object) throws JAXBException, UnsupportedEncodingException {
//1、创建JAXB对象,用于映射java类和XML
JAXBContext context = JAXBContext.newInstance(object.getClass());
//2、创建Marshaller对象,用于将java对象序列号为XML
Marshaller marshaller = context.createMarshaller();
//3、配置Marshaller参数,例如XML的输出格式、是否格式化输出等
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");//编码格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//是否格式化生成xml串
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);//是否省略xml头信息
//4、调用Marshaller的marshal方法将java对象序列化为XML,并存储到ByteArrayOutPutStream(可以将数据写入到内存中的输出流)
ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
marshaller.marshal(object, dataStream);
return dataStream.toString("UTF-8");
}
public static void main(String[] args) throws JAXBException, UnsupportedEncodingException {
Student student = new Student("aaa", 18);
System.out.println(getXmlWithoutHeader(student));
}
}
输入结果如下所示: