package com.gszc.util; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.gszc.constant.RequestXml; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.springframework.stereotype.Component; import java.util.List; @Component public class XmlUtils { /** * 解析esb返回结果 * * @param xml * @return */ public static JSONArray getResult(String xml) { Document doc = null; JSONArray jsonArray = new JSONArray(); try { doc = DocumentHelper.parseText(xml); Element rootElt = doc.getRootElement(); String textTrim = rootElt.element("Body").element("HIPMessageServerResponse").element("return").getTextTrim(); Document document = DocumentHelper.parseText(textTrim); String errcode = document.getRootElement().element("errcode").getTextTrim(); if("0".equals(errcode)){ throw new RuntimeException(document.getRootElement().elementText("errmsg")); } List rowElements = document.getRootElement().element("group").element("HRC00.02").elements("row"); for (Element element : rowElements) { List rowItem = element.elements(); JSONObject jsonObject = new JSONObject(); for (Element row : rowItem) { jsonObject.put(row.getName(), row.getTextTrim()); } jsonArray.add(jsonObject); } } catch (DocumentException e) { throw new RuntimeException("解析esb返回结果", e); } return jsonArray; } /** * 是否成功 * * @param xml * @return */ public static boolean success(String xml) { Document doc = null; try { doc = DocumentHelper.parseText(xml); Element rootElt = doc.getRootElement(); String errcode = rootElt.element("errcode").getTextTrim(); if ("1".equals(errcode)) { return true; } } catch (DocumentException e) { throw new RuntimeException("是否成功", e); } return false; } /** * 失败信息 * * @param xml * @return */ public static String errMsg(String xml) { Document doc = null; try { doc = DocumentHelper.parseText(xml); Element rootElt = doc.getRootElement(); String errmsg = rootElt.element("errmsg").getTextTrim(); return errmsg; } catch (DocumentException e) { throw new RuntimeException("失败信息", e); } } /** * 构造请求xml * * @param jsonObject * @param funcId * @return */ public static String buildSendXml(JSONObject jsonObject, String funcId, String appKey) { Document doc = null; try { doc = DocumentHelper.parseText(RequestXml.XML); Element rootElt = doc.getRootElement(); //设置服务编码 Element funcid = rootElt.element("funcid"); funcid.setText(funcId); //设置请求参数 Element element = rootElt.element("group").element("HRC00.02").element("row"); jsonObject.forEach((k, v) -> element.addElement(k).setText(v.toString())); //设置appkey Element appKeyElt = rootElt.element("group").element("head").element("row").element("appKey"); appKeyElt.setText(appKey); return doc.asXML(); } catch (DocumentException e) { throw new RuntimeException("构造请求xml", e); } } }