【项目学习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));
    }
}

输入结果如下所示:

相关推荐
凤凰院凶涛QAQ6 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
H.莓飛7 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1147 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
w_zero_one8 小时前
算法--模拟
java·数据结构·算法
Javatutouhouduan9 小时前
阿里1658页Java面试题总结(含答案)
java·高并发·java面试·java面试题·后端开发·java程序员·java八股文
秋天的怀念_David9 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
专业程序开发源9 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
秋天的怀念_David9 小时前
算法一千零一夜 · 第十四夜 幻方与奇妙的二进制
java·程序人生·算法
thefool1122669 小时前
网络编程^
java
Thinker QAQ10 小时前
并发编程(十一):Shared Memory 与 Message Passing——关系与组合使用
java·python·go·并发编程·shared memory·message passing