【项目学习1】如何将java对象转化为XML字符串

如何将java对象转化为XML字符串

将java对象转化为XML字符串,可以使用Java的XML操作库JAXB,具体操作步骤如下:

主要分为以下几步:

1、创建JAXBContext对象,用于映射Java类和XML。

java 复制代码
JAXBContext jaxbContext = JAXBContext.newInstance(Person.class);

2、创建Marshaller对象,用于将Java对象序列化为XML。

java 复制代码
Marshaller marshaller = jaxbContext.createMarshaller();

3、配置Marshaller参数,例如设置XML输出格式、是否格式化输出等。

java 复制代码
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

4、调用Marshaller的marshal方法将java对象序列化为XML,并存储到ByteArrayOutPutStream(可以将数据写入到内存中的输出流)

java 复制代码
ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
marshaller.marshal(object, dataStream);

5、转化为String输出

java 复制代码
return dataStream.toString("UTF-8");

举个例子

假设有一个java类Student,如下:

(注意 :需要在要转化的XML类上添加如下注解@XmlRootElement是JAXB提供的一个注解,用于将Java类映射为XML的根元素。当一个Java类需要被序列化为XML时,可以使用该注解来指定根元素的名称、命名空间等信息。)

java 复制代码
@XmlRootElement(name = "student")
public class Student {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public Student() {
    }
java 复制代码
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));
    }
}

输入结果如下所示:

相关推荐
一 乐31 分钟前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长1 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn1 小时前
Spring 注解使用详解
java·spring
一条小小yu1 小时前
Spring IoC的理解
java·后端·spring
落魄实习生1 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈2 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白3 小时前
核心功能(Service接口)
java·mybatis
乌暮4 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
大猫和小黄4 小时前
深入理解 Java Optional:从设计哲学到工程实战
java