项目问题之:解析xml
xml 报文的组装:
1.使用String.format通过占位符拼接;(采用这种,优势简化代码)
2.使用目前项目中得方法,使用ftl模板 算了没看懂
String strRequestXML = ""; try { //将DTO转换成xml Map<String, Object> packet = new HashMap<String, Object>(); packet.put("packet",packetDto); FreemarkerUtil.initTemplate(templateFile); // 获取模板 strRequestXML = FreemarkerUtil.returnXML(packet); // 返回接口使用的参数 } catch (Exception e) { e.printStackTrace(); }
xml的解析目前想到的方法:
1,写个截取字符串的方法,以前在别的项目中看到过
思路就是 入参为节点 找到 两个位置 ,然后截取
2.使用目前项目解析方式 XStream是一个Java对象和XML相互转换的工具 麻烦需要配置 xml对应的解析类
思路详情:使用XStream实现Java对象与XML互相转换 segmentfault 思否
responseStr = SendPropertyDoPost(packetDto,sendType); Body body = new Body(); Head head = new Head(); Object objbody = null; Object objhead = null; objhead = ParserXml.getHead(responseStr); head = (Head)objhead; 1.stinrg 转 body public static Object getBody(String s) { // String s = new SendCarInfoToCore().SendCarInfoDoPost(); String xmlString = deleteXMLTag(s); try { Packet packet = toBean(xmlString, Packet.class); return packet.getBody(); } catch (Exception e) { ErrRoot errRoot = toBean(xmlString, ErrRoot.class); e.printStackTrace(); return errRoot.getRetMsg(); } }
2.Packet.java
package com.sinosoft.b2c.propertyInsurance.agriculture.Dto; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("Packet") public class Packet { @XStreamAlias("Body") private Body body; @XStreamAlias("Head") private Head head; public Body getBody() { return body; } public void setBody(Body body) { this.body = body; } public Head getHead() { return head; } public void setHead(Head head) { this.head = head; } }
3.Body.java
package com.sinosoft.b2c.propertyInsurance.agriculture.Dto; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("Body") public class Body { @XStreamAlias("OperInfo") private OperInfoDto operInfo; @XStreamAlias("ClaimInfoList") private List<TaskDto> taskList; @XStreamAlias("ImageInfoList") private List<ImageInfo> imageInfoList; public List<ImageInfo> getImageInfoList() { return imageInfoList; } public void setImageInfoList(List<ImageInfo> imageInfoList) { this.imageInfoList = imageInfoList; } public List<TaskDto> getTaskList() { return taskList; } public void setTaskList(List<TaskDto> taskList) { this.taskList = taskList; } public OperInfoDto getOperInfo() { return operInfo; } public void setOperInfo(OperInfoDto operInfo) { this.operInfo = operInfo; } }
3.百度 J-A-X-B
java socket报文通信(三)java对象和xml格式文件的相互转换
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升