首页 > 编程语言 >xml2Obj,xml转java对象

xml2Obj,xml转java对象

时间:2023-01-10 18:00:10浏览次数:42  
标签:xml java xml2Obj JAXBException marshaller import javax String

 

 

import com.aaa.WorkWeixinEncrypt;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

public class XmlToObjUtil {
    /**
     * Object转xml
     * JAXB 是jdk 自带的工具,jdk1.6已经集成,1.5之前的版本需要另外导包
     * @param object
     * @return
     * @throws JAXBException
     */
    public String object2xml(Object object) throws JAXBException {
        StringWriter stringWriter = new StringWriter();
        JAXBContext context = JAXBContext.newInstance(object.getClass());
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
        marshaller.marshal(object, stringWriter);
        return new String(stringWriter.getBuffer());
    }

    /**
     * xml转Object
     * @param str
     * @param clazz
     * @param <T>
     * @return
     * @throws JAXBException
     */
    public <T> T xml2Object(String str, Class<T> clazz) throws JAXBException {
        JAXBContext context = JAXBContext.newInstance(clazz);
        Unmarshaller unmarshaller = context.createUnmarshaller();
        return (T)unmarshaller.unmarshal(new StringReader(str));
    }

    public static void main(String[] args)throws Exception {
        String str =
                "<xml>" +
                "    <toUserName>aaa</toUserName>\n" +
                "    <fromUserName> <![CDATA[sys]]></fromUserName>\n" +
                "</xml>";
        WorkWeixinEncrypt aa = new XmlToObjUtil().xml2Object(str, WorkWeixinEncrypt.class);
        System.err.println();
    }
}

 

 

import lombok.Data;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
 
@Data
@XmlRootElement(name="xml")//这个注解需要
public class WorkWeixinEncrypt implements Serializable {private String toUserName;
    private String fromUserName;

}

 

标签:xml,java,xml2Obj,JAXBException,marshaller,import,javax,String
From: https://www.cnblogs.com/xiaoliu66007/p/17041012.html

相关文章

  • 每个Java程序员都必须知道的四种负载均衡算法
    前言一般来说,我们在设计系统的时候,为了系统的高扩展性,会尽可能的创建无状态的系统,这样我们就可以采用集群的方式部署,最终很方便的根据需要动态增减服务器数量。但是,要使系......
  • JavaScript 中URL 查询字符串(query string)的序列与反序列化
    方法一:在JavaScript中,可以使用URLSearchParams对象来处理URL中的查询字符串。序列化(将JavaScript对象转换为查询字符串)可以使用URLSearchParams对象的append(......
  • JavaScript 计算base64编码图片大小
    JavaScript可以通过获取图片的base64编码并计算其大小来计算图片大小。方法一://计算base64编码图片大小functiongetBase64ImageSize(base64){ if(base64){ b......
  • 算法与数据结构高手养成-求职提升特训课(提供C++Java+Python 3大主流语言源码)
    ​​点击下载:算法与数据结构高手养成-求职提升特训课(提供C++Java+Python3大主流语言源码)​​  提取码:br1p《算法与数据结构高手养成-求职提升特训课》,一共17章,课程提供......
  • java:路径———(最短路径)
    题目描述小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。小蓝的图由2021个结点组成,依次编号1至2021。对于两个不同的结点a,b......
  • Java并发容器之DelayQueue源码分析
    一、简介DelayQueue是java并发包下的延时阻塞队列,常用于实现定时任务。二、继承体系从继承体系可以看到,DelayQueue实现了BlockingQueue,所以它是一个阻塞队列。另外,De......
  • Java学习方法
    如何更好的学习方法多写代码,多写笔记,多写文章多练交流,多练思维,多练技能多分享,多提问,多思考学习准备:博客为什么要写博客?需要思考和总结提升文笔组织能力提升学习......
  • java反序列化从0到cc1
    前言java安全已成为安全从业者必不可少的技能,而反序列化又是Java安全非常重要的一环。又是本文将从0基础开始,带着大家层层递进,从java基础到URLDNS链到最终理解反序列化cc1......
  • Java基础学习06
    学到一个新的之前没遇到的方法的参数表示:可变参数(2023-01-10)当多个函数的功能相同,参数的类型也相同,但是参数的个数不同的时候就可以用到可变参数。表示方法:int...nums;......
  • Springboot .properties或.yml配置文件读取pom.xml文件值
    需要在pom.xml中打开过滤才可以<build><resources><resource><directory>src/main/resources</directory><fi......