Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >XmlRootElement的作用和用法

XmlRootElement的作用和用法

作者头像
java攻城狮
发布于 2020-10-10 08:34:39
发布于 2020-10-10 08:34:39
4.3K00
代码可运行
举报
文章被收录于专栏:个人积累个人积累
运行总次数:0
代码可运行

手动封装实体类转换成xml

实体类

代码语言:javascript
代码运行次数:0
复制
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * @ClassName RequetsXml
 * @Description TODO
 * @Author xiongchao
 * @Date 2020/7/14 10:23
 **/

@XmlRootElement(name = "request")
public class RequetsXml {

    @XmlElement(name = "casefile")
    private CaseFile caseFile;

    @XmlElement(name = "uploaded-file-id")
    private String fileId;


    public void setCaseFile(CaseFile caseFile) {
        this.caseFile = caseFile;
    }

    public void setFileId(String fileId) {
        this.fileId = fileId;
    }

    private static class CaseFile{

        private String name;

        @XmlElement(name = "isTmpFile")
        private boolean isTmpFile;

        @XmlElement(name = "modify-timestamp")
        private String modifyTimStamp;

        @XmlElement(name = "sdb-group-id")
        private Integer groupId;

        @XmlElement(name = "source-system-id")
        private Integer sourceId;



        public void setName(String name) {
            this.name = name;
        }


        public void setTmpFile(boolean tmpFile) {
            isTmpFile = tmpFile;
        }


        public void setModifyTimStamp(String modifyTimStamp) {
            this.modifyTimStamp = modifyTimStamp;
        }

        public void setGroupId(Integer groupId) {
            this.groupId = groupId;
        }

        public void setSourceId(Integer sourceId) {
            this.sourceId = sourceId;
        }
    }

测试

代码语言:javascript
代码运行次数:0
复制
public static void main(String[] args) throws JAXBException {
        RequetsXml root = new RequetsXml();
        root.setFileId("adsa45475454");

        CaseFile caseFile = new CaseFile();
        caseFile.setName("王凯");
        caseFile.setTmpFile(false);
        caseFile.setGroupId(1);
        caseFile.setSourceId(0);
        caseFile.setModifyTimStamp("1575454212");
        root.setCaseFile(caseFile);

        JAXBContext context = JAXBContext.newInstance(RequetsXml.class);
        Marshaller m = context.createMarshaller();
        m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        m.marshal(root, System.out);

    }

输出

代码语言:javascript
代码运行次数:0
复制
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<request>
    <casefile>
        <name>王凯</name>
        <isTmpFile>false</isTmpFile>
        <modify-timestamp>1575454212</modify-timestamp>
        <sdb-group-id>1</sdb-group-id>
        <source-system-id>0</source-system-id>
    </casefile>
    <uploaded-file-id>adsa45475454</uploaded-file-id>
</request>

工具类封装

代码语言:javascript
代码运行次数:0
复制
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.json.JSONException;
import org.json.XML;

import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

/**
 *
 * Class Name: XmlConvertUtil
 * Description: xml格式转化工具类
 *
 */
public class XmlConvertUtil {
 /**
  * xml转换成JavaBean
  *
  * @param xml xml格式字符串
  * @param t 待转化的对象
  * @return 转化后的对象
  * @throws Exception JAXBException
  */
 @SuppressWarnings({ "unchecked" })
 public static <T> T convertToJavaBean(String xml, Class<T> t) throws Exception {
  T obj = null;
  JAXBContext context = JAXBContext.newInstance(t);
  Unmarshaller unmarshaller = context.createUnmarshaller();
  obj = (T) unmarshaller.unmarshal(new StringReader(xml));
  return obj;
 }

 /**
  * JavaBean转换成xml
  * @param obj
  * @param encoding
  * @return
  */
 public static String convertToXml(Object obj, String encoding) {
  String result = null;
  try {
   JAXBContext context = JAXBContext.newInstance(obj.getClass());
   Marshaller marshaller = context.createMarshaller();
   marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
   marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);

   StringWriter writer = new StringWriter();
   marshaller.marshal(obj, writer);
   result = writer.toString();
  } catch (Exception e) {
   e.printStackTrace();
  }

  return result;
 }

 public static JSONObject xmlToJson(String xml) {
  try {
   org.json.JSONObject object = XML.toJSONObject(xml);
   String jsonData = object.get("response").toString();
   JSONObject jsonObject = JSON.parseObject(jsonData);
   return jsonObject;
   /*JSONObject result = (JSONObject) jsonObject.get("result");
   JSONObject upload = (JSONObject) result.get("upload");
   String uploadUrl = upload.get("url").toString();
   String fildId = upload.get("upload-file-id").toString();*/
  } catch (JSONException e) {
   e.printStackTrace();
   return null;
  }
 }
}

切记,实体类中的@XmlRootElement注解不可一省略,否则会抛异常

[特别重要] 补充一下,加上get方法之后,如果出现报错,在get方法上面添加注解@XmlTransient

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java对象和XML相互转换
JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB)
JokerDJ
2023/11/27
6410
JAXB使用方式
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。
HUC思梦
2020/09/03
2.4K0
使用jaxb进行xml到bean的转换(尝试解决空值不显示问题)
import javax.xml.bind.Marshaller; import java.lang.reflect.Field; //监听生成xml文件过程 public class MarshallerListener extends Marshaller.Listener { public static final String BLANK_CHAR = ""; @Override public void beforeMarshal(Object source) {
JQ实验室
2022/02/10
2.5K0
Java_数据交换_JAXB_用法入门
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。
shirayner
2018/08/10
1.7K0
Java_数据交换_JAXB_用法入门
JAXB应用实例
过往的项目中数据存储都离不开数据库,不过最近做的一个项目的某些数据(比如人员信息、菜单、权限等等)却完全没有涉及任何数据库操作,直接XML搞定。这里无意比较优劣,因为数据库存储和XML存储本就有不同的适用场景,盲目比较毫无意义,只是因为业务需要,仅此而已。先来概念一下——XML,可扩展标记语言,设计宗旨是用来传输数据而非显示数据,其遵循W3C标准,是一种通用的数据交换格式,具有很强的跨平台性,并且数据无需转换,所以,如果你要将数据做跨平台传输,那么把数据保存在 XML 文件中是有好处的。当然,这里要说明,
用户1615728
2018/04/17
3.6K0
JAXB应用实例
XStream、JAXB 日期(Date)、数字(Number)格式化输出xml
XStream、Jaxb是java中用于对象xml序列化/反序列化 的经典开源项目,利用它们将对象转换成xml时,经常会遇到日期(Date)、数字按指定格式输出的需求,下面是使用示例: 一、日期字段格式化输出 1.1 xStream 1 XStream x = new XStream(); 2 x.registerConverter(new DateConverter("yyyy-MM-dd HH:mm:ss", null,TimeZone.getTimeZone("GMT+8"))); xStream默认
菩提树下的杨过
2018/01/19
2.7K0
xml与java对象的快速互转
做流程图的项目时,新的流程定义为xml的,需要对xml与java对象进行互转 查了一下activiti的转换xml方式,发现转换太麻烦了,需要一步步的解析xml 后面发现直接用jaxb就可以很快实现互转,而且现在这个jaxb在jdk内,不需要引入外部的解析xml的包 具体如下: 一.根据XML构建java对象
星痕
2018/09/12
3.9K0
xml解析系列(二)——用Marshaller和Unmarshaller解析xml
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
逝兮诚
2019/10/30
2.4K0
java注解生成xml和包含CDATA问题
百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类! 下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和xml中CDATA 问题的解决方法! 1:要生成的xml原始文件!
全栈程序员站长
2022/07/19
1.1K0
java程序 如何优雅地读取xml文件
实例xml <?xml version="1.0" encoding="UTF-8"?> <c c1="0"> <d d1="101280101" d2="广州" d3="guangzhou" d
Meet相识
2018/09/12
2.9K0
OpenJDK8升级到OpenJDK11需要注意的修改与异常
目前,JDK两个长期版本是8和11,由于大部分项目使用的还是8,所以从8升级到11会遇到一些困难。
干货满满张哈希
2021/04/12
1.3K0
java JAXB 学习
JAXB(Java Architecture for XML Binding)是JDK的一部分,用于Object <-> XML的转换(有点类似于.NET中的XML序列化)。 1、创建XSD 可以使用
菩提树下的杨过
2018/01/24
1.4K0
java JAXB 学习
JAX-WS – Soap详解[通俗易懂]
http://download.csdn.net/detail/u013379717/7453709
全栈程序员站长
2022/09/14
2.2K0
JAX-WS – Soap详解[通俗易懂]
Java6新特性及使用
以下是Java6中的引入的部分新特性,相比Java5的新特性就少了很多了。关于Java6更详细的介绍可参考这里。
Abalone
2022/07/14
2.1K0
Java xml数据格式返回实现
前言:对于服务器后端开发,接口返回的数据格式一般要求都是json,但是也有使用xml格式
全栈程序员站长
2022/09/13
1.3K0
Java xml数据格式返回实现
springMVC整合JAXB[通俗易懂]
由于项目中要用到将Java对象转为xml返回给调用者。选择使用JAXB,由于它是JDK自带的。不须要引入其它Jar包
全栈程序员站长
2022/07/06
8580
springMVC整合JAXB[通俗易懂]
微信支付【代码篇】
接上一篇,领导让我帮忙对接一下微信支付,接到文档之后我一脸懵逼,看了半天之后发现与银行对接大同小异,于是根据微信API要求进行了编码。
简单的程序员
2020/04/18
2K0
如何实现天气数据的同步和使用QuartzScheduler?
在micro-weather-redis应用的基础上,创建一个名称为micro-weather-quartz的应用,用于同步天气数据。
愿天堂没有BUG
2022/10/28
1.5K0
如何实现天气数据的同步和使用QuartzScheduler?
Spring 4 MVC 视图解析器(XML JSON PDF等) 纯注解(带源码)【推荐】
原文地址:http://websystique.com/springmvc/spring-4-mvc-contentnegotiatingviewresolver-example/
明明如月学长
2021/08/27
2.3K0
利用Spring MVC搭建REST Service
之前写过一篇 利用JAX-RS快速开发RESTful 服务 今天来看下spring-mvc框架如何实现类似的功能:  一、pom.xml 1 <?xml version="1.0" encodin
菩提树下的杨过
2018/01/24
1.1K0
利用Spring MVC搭建REST Service
相关推荐
Java对象和XML相互转换
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验