项目问题之:解析xml

xml 报文的组装:

  1.使用String.format通过占位符拼接;(采用这种,优势简化代码)

    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解析XML(4种方法)

    XML解析之DOM解析详解

    JAXB轻松转换xml对象和java对象

    java socket报文通信(三)java对象和xml格式文件的相互转换

 

 

 

 

 

 

 

 
posted @   BBS_自律  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
点击右上角即可分享
微信分享提示