项目问题之:解析xml


xml 报文的组装:

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

    String.format的用法

  2.使用目前项目中得方法,使用ftl模板 算了没看懂

    String strRequestXML = "";  
        try {
            //将DTO转换成xml
            Map packet = new HashMap();
            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 taskList;
    
    @XStreamAlias("ImageInfoList")
    private List imageInfoList;
    
    public List getImageInfoList() {
        return imageInfoList;
    }

    public void setImageInfoList(List imageInfoList) {
        this.imageInfoList = imageInfoList;
    }

    public List getTaskList() {
        return taskList;
    }

    public void setTaskList(List 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格式文件的相互转换

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
Bing Webmaster Portal Back