XML与各种格式的数据进行转换的工具类
目录:
- 1、使用场景
- 2、上工具类
1、使用场景
一般使用的场景是与c++服务器端进行通信时,需要将对象转换为xml字符串,然后将xml字符串的数据加上指令码一起发送到服务器进行相关操作。
代码伸缩:
@Overridepublic void cleanRoomUser(RoomOperateDto roomOperateDto) {// 验证会议室ID存不存在checkRoomExist(roomOperateDto.getRoomId());// 请求xmlString operator = StringUtils.isBlank(roomOperateDto.getOperator()) ? "" : roomOperateDto.getOperator();String appBackNotify= StringUtils.isBlank(roomOperateDto.getAppBackNotify()) ? "" : roomOperateDto.getAppBackNotify();roomOperateDto.setOperator(new String(operator.getBytes(), StandardCharsets.UTF_8));roomOperateDto.setAppBackNotify(new String(appBackNotify.getBytes(), StandardCharsets.UTF_8));ReqCleanRoomUsersBean request =new ReqCleanRoomUsersBean(roomOperateDto.getRoomId(),roomOperateDto.getOperator(), roomOperateDto.getAppBackNotify());String requestContent = ResponseXmlUtil.responseToNoHeadXml(request);// 与服务器建立连接,并发送消息NettyClient client = null;try {client = fmapiBean.getNettyClient();//重点是这个方法Response res = client.sent(NettyConstant.MODULE1, NettyConstant.COMMAND13, requestContent);String content = new String(res.getContent(), StandardCharsets.UTF_8);ResponseDefeatBean responseDefeatBean = ResponseXmlUtil.xml2Bean(content, ResponseDefeatBean.class);if (!SystemConst.SUCCESS.equals(responseDefeatBean.getCode())) {throw new ServiceException(responseDefeatBean.getCode(), responseDefeatBean.getMsg());}} catch (ServiceException ex) {throw new ServiceException(ex.getCode(), ex.getMessage());} catch (Exception ex) {throw new ServiceException(SystemConst.UNABLE_CONNECT_SERVER, "无法连接会议服务器");} finally {if (client != null) {client.close();}}}
这里具体方法每个人都不一样,关注即可,重点是下面的工具类,方便后面开发使用。
2、上工具类
/** Project Name:fmapi* File Name:ResponseXmlUtil.java* Package Name:com.hst.ces.utils* Date:2016年5月5日* Copyright (c) 2016 HST Inc. All Rights Reserved.**/package com.hst.ces.fmapirest.utils;import com.hst.ces.fmapirest.entity.responsebean.ResponseDefeatBean;
import lombok.extern.slf4j.Slf4j;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;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;/*** @author Solin*/
@Slf4j
public class ResponseXmlUtil {private ResponseXmlUtil() {}/*** 格式化XML字符串*/public static String formatXml(String str) throws Exception {Document document;document = DocumentHelper.parseText(str);// 格式化输出格式OutputFormat format = OutputFormat.createPrettyPrint();// 设置xml的输出编码format.setEncoding(ConstantDefault.UTF_8);StringWriter writer = new StringWriter();// 格式化输出流XMLWriter xmlWriter = new XMLWriter(writer, format);// 将document写入到输出流xmlWriter.write(document);xmlWriter.close();return writer.toString();}/*** 将返回数据转换为XML格式(格式化、不省略头信息)*/public static String responseToXml(Object obj) {try {JAXBContext context = JAXBContext.newInstance(obj.getClass());Marshaller marshaller = context.createMarshaller();// //编码格式marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// 是否格式化生成的xml串marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否省略xm头声明信息marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);StringWriter writer = new StringWriter();marshaller.marshal(obj, writer);return writer.toString();} catch (Exception ex) {throw new RuntimeException(ex);}}/*** 将返回数据转换为XML格式(不格式化、省略头信息)*/public static String responseToNoHeadXml(Object obj) {try {JAXBContext context = JAXBContext.newInstance(obj.getClass());Marshaller marshaller = context.createMarshaller();//编码格式marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// 是否格式化生成的xml串marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);// 是否省略xm头声明信息marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);StringWriter writer = new StringWriter();marshaller.marshal(obj, writer);return writer.toString();} catch (Exception ex) {throw new RuntimeException(ex);}}/*** xml 转 对象*/public static <T> T xml2Bean(String xmlStr, Class<T> clazz) {T obj = null;try {JAXBContext jaxbContext = JAXBContext.newInstance(clazz);Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();obj = (T) unmarshaller.unmarshal(new StringReader(xmlStr));} catch (JAXBException ex) {log.error("xml 转 对象异常", ex);}return obj;}/*** 定义接口调用返回失败方法*/public static String responseDefeat(String info) {ResponseDefeatBean defeat = new ResponseDefeatBean();defeat.setCode(info);defeat.setMsg(SystemConst.RESPONSE_DEFEAT);return responseToXml(defeat);}}
XML与各种格式的数据进行转换的工具类相关推荐
- Java汉字转换拼音工具类
1. 使用pinyin4j 1.1 引入相关maven依赖 <dependency><groupId>com.belerweb</groupId><artif ...
- JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)
JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...
- 数据对接利用hutool工具类进行xml解析,xml转换成map,然后进行数据入库
数据对接xml解析 <ESBEntry><!--通过MB对请求进行权限验证,验证后将删除AccessControl节点 --><AccessControl>< ...
- DWG格式的数据如何转换投影?
前提: DWG是AutoCAD的标准文件格式. 任务: 原本的DWG格式的数据,是CGCS2000坐标系,高斯投影6度分带的.现在要将这份数据转化为CGCS2000坐标系,高斯投影3度分带. 问题: ...
- java ztree json_java 树形转换JSON 工具类 / 树形子父级菜单递归 JSON 格式
实体类: package tree; import java.util.List; /** * *2018-11-30 */ public class Menu { // 菜单id private S ...
- 关于POI导出数据的util与工具类
// 使用前先将 FileUtil与PoiUtil两个工具类导入,再将ContractPrint导入action中,new contractprint 将三个参数传入即可 package cn.itc ...
- List、Map 与json转换的工具类
最近做公司项目安排做后台,因为写接口给别人用,就不能随随便便返回数据与接收数据了,为了统一性,要求统一用json来传输数据,为了方便后期的代码的维护以及代码的简洁,笔者整理了一下json与List.M ...
- JAVA 图片地址路径转换 Base64 工具类
工具类代码: import sun.misc.BASE64Encoder; import java.io.ByteArrayOutputStream; import java.io.FileInput ...
- 上传PDF文件转换图片工具类
一,pdf图片转换工具 import org.apache.http.entity.ContentType; import org.apache.pdfbox.pdmodel.PDDocument; ...
最新文章
- shell访问php文件夹,Shell获取某目录下所有文件夹的名称
- windows mobile设置插移动卡没反应_ETC不用时,能不能把卡拔下来
- webpack 独立打包 css 文件
- vue 常用ui组件
- win8信息服务器不可用怎么办,win8系统下开机提示OneDrive选项此服务现在不可用请稍后再试怎么办...
- 期货品种产业链图表_农业
- FFmpeg转码音视频不同步情况总结
- 瑞星企业防毒2010网络版(二)管理及应用
- 基于 YOLOV5 的 SAR 图像舰船检测
- ThoughtWorks 2019届校招算法、软开迷宫(maze)生成题目
- html修改导航栏字体大小,CSS 制作网页导航条(下)
- mysql 按条件join_MySQL Join竟然可以这么玩?根据条件进行复制
- QDialog无边框
- gsoap 的好网站 http://www.cs.fsu.edu/~engelen/soapexamples.html
- 观察者模式与推拉模型
- Linux命令之 jstack
- Linux系统UID和GID详解
- 和AWS云游四海@姓“诸葛”,名“io”
- 扫雷游戏软件测试,软件测试
- Diskeeper 2010 EnterpriseServer
热门文章
- PAT甲级1050 String Subtraction
- 计算机视觉__基本图像操作(显示、读取、保存)
- VitrualBox CentOS8 配置NAT模式网络,关闭防火墙,设置编码,设置服务器时间,yum源地址修改,安装docker及docker-compose
- 对创业者来说,现在做小程序代理加盟晚不晚?
- oracle数据转换万能通用初级脚本自动生成器(本人多年数据转换自己用的数据转换的初次迭代脚本生成器,不涉及公司机密,完全个人产品)
- aspose转pdf横版_Aspose实现文件转PDF在线预览及水印功能
- 儿童过敏性体质为什么越来越多?
- Windows和PyCharm常用快捷键
- 计算机应用老师优点,多媒体教学的优点与缺点
- 开咖啡厅经营学|迷你咖啡店开店策略,带你一一拆解