响应报文为标签形式(get)

1、Dom4JUtil

package xxx.xx目录.controller;

import lombok.extern.slf4j.Slf4j;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

@Slf4j
public class Dom4JUtil {

    public static Map<String, Object> getInfo(String strXml) throws Exception {
        Map<String, Object> result = new HashMap<>();

        //临时存放查询后的结果
        String filePath = "E:\\" + System.currentTimeMillis() + ".xml";

        StringBuffer strBuf = new StringBuffer();
        strBuf.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n")
                .append("<class><str>")
                .append(strXml)
                .append("</str></class>");
        saveFiles(strBuf.toString(), filePath);
        //1.创建Reader对象
        SAXReader reader = new SAXReader();
        //2.加载xml
        Document document = reader.read(new File(filePath));
        //3.获取根节点
        Element rootElement = document.getRootElement();
        Iterator iterator = rootElement.elementIterator();

        while (iterator.hasNext()){
            Element stu = (Element) iterator.next();
            List<Attribute> attributes = stu.attributes();
            log.info("获取属性值-->");
            for (Attribute attribute : attributes) {
                System.out.println(attribute.getValue());
            }
            log.info("遍历子节点-->");
            Iterator iterator1 = stu.elementIterator();

            while (iterator1.hasNext()){
                Element stuChild = (Element) iterator1.next();
//                System.out.println("节点名:"+stuChild.getName()+"---节点值:"+stuChild.getStringValue());
                result.put(stuChild.getName(), stuChild.getStringValue());
            }
        }
        //删除临时文件
        Files.deleteIfExists(Paths.get(filePath));
        return result;
    }


    public static void saveFiles(String strXml, String filePath) {
        FileWriter fwriter = null;
        try {
            // true表示不覆盖原来的内容,而是加到文件的后面。若要覆盖原来的内容,直接省略这个参数就好
            fwriter = new FileWriter(filePath);
            fwriter.write(strXml);
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            try {
                fwriter.flush();
                fwriter.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    public static void main(String[] args) throws Exception {
        String strXml = "<ERR>OK</ERR><时间>20211021172647</时间><BATCHNO>1</BATCHNO><AAB301>620001</AAB301><AAZ500>X00000019</AAZ500><AAC002>620101198001010133</AAC002><AAC003>姓名一</AAC003><AAC161>CHN</AAC161><AAC058>01</AAC058><AAC147>620101198001010133</AAC147><AAB099>20300101</AAB099><AAC004>1</AAC004><AAC005>01</AAC005><AAC006>19800101</AAC006><AAC008>1</AAC008><AAC009>11</AAC009><AAC010>户口地址1</AAC010><AAC067>移动电话1</AAC067><AAE005>固定电话1</AAE005><AAE006>常住地址1</AAE006><AAE007>邮编01</AAE007><AAE159>1@12333.cn</AAE159><AAB001>单位编号1</AAB001><AAB004>单位名称1</AAB004><ACA111>2030000</ACA111><JHRZH>监护人证号1</JHRZH><JHRXM>监护人姓名1</JHRXM><JHRDH>监护人电话1</JHRDH>";
        getInfo(strXml);
    }
}

2、使用Dom4JUtil处理请求成功数据

 /**
     * 信息查询
     * @param 参数
     * @return
     */
    @GetMapping("/getXXX")
    public Map<String, Object> getUserInfo(参数){
        Map<String, Object> result = new HashMap<>()
        try {
            Call call = (Call)(new Service()).createCall();
            call.setTargetEndpointAddress(new URL(wwUrl));
            call.setOperationName(new QName("url", "接口名"));
            call.setTimeout(30000);
            String res = (String)call.invoke(new String[]{参数1,参数2,...});
            System.out.println(res);
            log.info("<<信息查询>>接口调用返回结果:" + res);

            String status = res.split("</ERR>")[0].replace("<ERR>", "");
            if (!"OK".equals(status)) {
                result.put("code", "002");
                result.put("message", status);
            } else {
                //处理成功信息
                **return Dom4JUtil.getInfo(res);**
            }
        } catch (ServiceException e) {
            log.error(e.getMessage());
            result.put("code","003");
            result.put("message",ERROR);
            return result;
        } catch (MalformedURLException e) {
            log.error(e.getMessage());
            result.put("code","003");
            result.put("message",ERROR);
            return result;
        } catch (RemoteException e) {
            log.error(e.getMessage());
            result.put("code","003");
            result.put("message",ERROR);
            return result;
        } catch (Exception e) {
            log.error(e.getMessage());
            result.put("code","003");
            result.put("message",ERROR);
            return result;
        }
        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值