目录:

  • 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与各种格式的数据进行转换的工具类相关推荐

  1. Java汉字转换拼音工具类

    1. 使用pinyin4j 1.1 引入相关maven依赖 <dependency><groupId>com.belerweb</groupId><artif ...

  2. JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)

    JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...

  3. 数据对接利用hutool工具类进行xml解析,xml转换成map,然后进行数据入库

    数据对接xml解析 <ESBEntry><!--通过MB对请求进行权限验证,验证后将删除AccessControl节点 --><AccessControl>< ...

  4. DWG格式的数据如何转换投影?

    前提: DWG是AutoCAD的标准文件格式. 任务: 原本的DWG格式的数据,是CGCS2000坐标系,高斯投影6度分带的.现在要将这份数据转化为CGCS2000坐标系,高斯投影3度分带. 问题: ...

  5. java ztree json_java 树形转换JSON 工具类 / 树形子父级菜单递归 JSON 格式

    实体类: package tree; import java.util.List; /** * *2018-11-30 */ public class Menu { // 菜单id private S ...

  6. 关于POI导出数据的util与工具类

    // 使用前先将 FileUtil与PoiUtil两个工具类导入,再将ContractPrint导入action中,new contractprint 将三个参数传入即可 package cn.itc ...

  7. List、Map 与json转换的工具类

    最近做公司项目安排做后台,因为写接口给别人用,就不能随随便便返回数据与接收数据了,为了统一性,要求统一用json来传输数据,为了方便后期的代码的维护以及代码的简洁,笔者整理了一下json与List.M ...

  8. JAVA 图片地址路径转换 Base64 工具类

    工具类代码: import sun.misc.BASE64Encoder; import java.io.ByteArrayOutputStream; import java.io.FileInput ...

  9. 上传PDF文件转换图片工具类

    一,pdf图片转换工具 import org.apache.http.entity.ContentType; import org.apache.pdfbox.pdmodel.PDDocument; ...

最新文章

  1. shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  2. windows mobile设置插移动卡没反应_ETC不用时,能不能把卡拔下来
  3. webpack 独立打包 css 文件
  4. vue 常用ui组件
  5. win8信息服务器不可用怎么办,win8系统下开机提示OneDrive选项此服务现在不可用请稍后再试怎么办...
  6. 期货品种产业链图表_农业
  7. FFmpeg转码音视频不同步情况总结
  8. 瑞星企业防毒2010网络版(二)管理及应用
  9. 基于 YOLOV5 的 SAR 图像舰船检测
  10. ThoughtWorks 2019届校招算法、软开迷宫(maze)生成题目
  11. html修改导航栏字体大小,CSS 制作网页导航条(下)
  12. mysql 按条件join_MySQL Join竟然可以这么玩?根据条件进行复制
  13. QDialog无边框
  14. gsoap 的好网站 http://www.cs.fsu.edu/~engelen/soapexamples.html
  15. 观察者模式与推拉模型
  16. Linux命令之 jstack
  17. Linux系统UID和GID详解
  18. 和AWS云游四海@姓“诸葛”,名“io”
  19. 扫雷游戏软件测试,软件测试
  20. Diskeeper 2010 EnterpriseServer

热门文章

  1. PAT甲级1050 String Subtraction
  2. 计算机视觉__基本图像操作(显示、读取、保存)
  3. VitrualBox CentOS8 配置NAT模式网络,关闭防火墙,设置编码,设置服务器时间,yum源地址修改,安装docker及docker-compose
  4. 对创业者来说,现在做小程序代理加盟晚不晚?
  5. oracle数据转换万能通用初级脚本自动生成器(本人多年数据转换自己用的数据转换的初次迭代脚本生成器,不涉及公司机密,完全个人产品)
  6. aspose转pdf横版_Aspose实现文件转PDF在线预览及水印功能
  7. 儿童过敏性体质为什么越来越多?
  8. Windows和PyCharm常用快捷键
  9. 计算机应用老师优点,多媒体教学的优点与缺点
  10. 开咖啡厅经营学|迷你咖啡店开店策略,带你一一拆解