package org.springblade.code.utils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.vci.mdm.constant.MdmDuckingConstant.*; public class XmlUtil { /* 第一版本 */ public static Map readPreXml_bak(String xmlData) throws Exception{ Map datasMap = new HashMap(); Document document = DocumentHelper.parseText(xmlData); Element datas_element = document.getRootElement(); Attribute datas_systemid_attr = datas_element.attribute(XML_SYSTEMID); String systemid = datas_systemid_attr==null?"":datas_systemid_attr.getValue();//systemid List data_elements = datas_element.elements(XML_DATA); List> dataMapList = new ArrayList>(); for (Element data_element:data_elements){ Map dataMap = new HashMap(); Attribute data_unique_attr = data_element.attribute(XML_UNIQUE); String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique Attribute data_type_attr = data_element.attribute(XML_TYPE); String type = data_type_attr==null?"":data_type_attr.getValue();//type Element pro_elements = data_element.element(XML_PROS); List attrs_elements = pro_elements.elements(XML_ATTR); List> attrList = new ArrayList>(); for (Element attr_element:attrs_elements){ Map attrMap = new HashMap(); Attribute attr_key_attr = attr_element.attribute(XML_KEY); String attr_key = attr_key_attr==null?"":attr_key_attr.getValue();//key Attribute attr_mean_attr = attr_element.attribute(XML_MEAN); String attr_mean = attr_mean_attr==null?"":attr_mean_attr.getValue();//mean String attr_text = attr_element.getText(); attrMap.put(XML_KEY,attr_key); attrMap.put(XML_MEAN,attr_mean); attrMap.put(XML_TEXT,attr_text); attrList.add(attrMap); } dataMap.put(XML_UNIQUE,unique); dataMap.put(XML_TYPE,type); dataMap.put(XML_ATTR,attrList); dataMapList.add(dataMap); datasMap.put(XML_SYSTEMID,systemid); datasMap.put(XML_DATAS,dataMapList); } return datasMap; } public static String writePreBackXmlData_bak(String code,String msg,List xmlDataList){ String xmlString = null; try { Document document = DocumentHelper.createDocument(); document.setXMLEncoding("UTF-8"); Element root = document.addElement(XML_DATAS); root.addAttribute(XML_CODE, code); root.addAttribute(XML_MSG, msg); if(xmlDataList!=null) { for (XmlData xmlData : xmlDataList) { if(xmlData==null){ continue; } Element data_element = root.addElement(XML_DATA); data_element.addAttribute(XML_UNIQUE, xmlData.getUnique()); data_element.addAttribute(XML_STATE, xmlData.getState()); data_element.addAttribute(XML_MSG, xmlData.getMsg()); data_element.addAttribute(XML_NUM, xmlData.getNum()); } } OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(format); writer.write(document); xmlString=document.asXML(); } catch (Exception e) { // TODO: handle exception } return xmlString; } /* 根据部长已经修改的第一版 MPM oa0001 wupin code01 所属结构 温度调节器1 code02 主要功能 导电连接1 oa0002 wupin code01 所属结构 温度调节器2 code02 主要功能 导电连接2 */ public static Map readPreXml1(String xmlData) throws Exception{ Map datasMap = new HashMap(); Document document = DocumentHelper.parseText(xmlData); Element object_element = document.getRootElement(); Element system_element = object_element.element(XML_SYSTEMID); String systemid = system_element.getText(); Element datas_element = object_element.element(XML_DATAS); List data_elements = datas_element.elements(XML_DATA); List> datasList = new ArrayList>(); for (Element data_element:data_elements){ Map dataMap = new HashMap(); Attribute data_unique_attr = data_element.attribute(XML_UNIQUE); String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique Attribute data_type_attr = data_element.attribute(XML_TYPE); String type = data_type_attr==null?"":data_type_attr.getValue();//type Element pros_elements = data_element.element(XML_PROS); List pro_elements = pros_elements.elements(XML_PRO); List> proList = new ArrayList>(); for (Element pro_element:pro_elements){ Map proMap = new HashMap(); Element pro_key_element = pro_element.element(XML_KEY); String pro_key = pro_key_element==null?"":pro_key_element.getText();//key Element pro_mean_element = pro_element.element(XML_MEAN); String pro_mean = pro_mean_element==null?"":pro_mean_element.getText();//mean String pro_text = pro_element.getText(); proMap.put(XML_KEY,pro_key); proMap.put(XML_MEAN,pro_mean); proMap.put(XML_TEXT,pro_text); proList.add(proMap); } dataMap.put(XML_UNIQUE,unique); dataMap.put(XML_TYPE,type); dataMap.put(XML_PROS,proList); datasList.add(dataMap); datasMap.put(XML_SYSTEMID,systemid); datasMap.put(XML_DATAS,datasList); } return datasMap; } /* 处理成功 200 oa0001 200 根据图号查询编码成功! OA-0002-01 oa0002 400 接收数据成功! oa0003 500 接收数据失败,参数缺少unique! */ public static String writePreBackXmlData1(String code,String msg,List xmlDataList){ String xmlString = null; try { Document document = DocumentHelper.createDocument(); document.setXMLEncoding("UTF-8"); Element object_element = document.addElement(XML_OBJECT); Element code_element = object_element.addElement(XML_CODE); code_element.setText(code); Element msg_element = object_element.addElement(XML_MSG); msg_element.setText(msg); if(xmlDataList!=null) { for (XmlData xmlData : xmlDataList) { if(xmlData==null){ continue; } Element data_element = object_element.addElement(XML_DATA); Element unique_element = data_element.addElement(XML_UNIQUE); unique_element.setText(xmlData.getUnique()); Element datacode_element = data_element.addElement(XML_DATACODE); datacode_element.setText(xmlData.getState()); Element datacmsg_element = data_element.addElement(XML_DATAMSG); datacmsg_element.setText(xmlData.getMsg()); Element num_element = data_element.addElement(XML_NUM); num_element.setText(xmlData.getNum()); } } OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(format); writer.write(document); xmlString=document.asXML(); } catch (Exception e) { // TODO: handle exception } return xmlString; } /* 部长亲自动手修改的版本 */ public static Map readPreXmlData(String xmlData) throws Exception{ Map datasMap = new HashMap(); Document document = DocumentHelper.parseText(xmlData); Element object_element = document.getRootElement(); Attribute systemid_attr = object_element.attribute(XML_SYSTEMID); String systemid = systemid_attr.getValue(); Element datas_element = object_element.element(XML_DATAS); List data_elements = datas_element.elements(XML_DATA); List> datasList = new ArrayList>(); for (Element data_element:data_elements){ Map dataMap = new HashMap(); Attribute data_unique_attr = data_element.attribute(XML_UNIQUE); String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique Attribute data_type_attr = data_element.attribute(XML_TYPE); String type = data_type_attr==null?"":data_type_attr.getValue();//type Element pros_elements = data_element.element(XML_PROS); List pro_elements = pros_elements.elements(XML_PRO); List> proList = new ArrayList>(); for (Element pro_element:pro_elements){ Map proMap = new HashMap(); Attribute pro_key_attr = pro_element.attribute(XML_KEY); String pro_key = pro_key_attr==null?"":pro_key_attr.getValue();//key pro_key = pro_key.toLowerCase();//全都转换为小写 Attribute pro_mean_attr = pro_element.attribute(XML_MEAN); String pro_mean = pro_mean_attr==null?"":pro_mean_attr.getValue();//mean Attribute pro_value_attr = pro_element.attribute(XML_VALUE); String pro_value = pro_value_attr==null?"":pro_value_attr.getValue();//mean proMap.put(XML_KEY,pro_key); proMap.put(XML_MEAN,pro_mean); proMap.put(XML_TEXT,pro_value); proList.add(proMap); } dataMap.put(XML_UNIQUE,unique); dataMap.put(XML_TYPE,type); dataMap.put(XML_PROS,proList); datasList.add(dataMap); datasMap.put(XML_SYSTEMID,systemid); datasMap.put(XML_DATAS,datasList); } return datasMap; } /* 处理成功 200 根据图号查询编码成功! 接收数据成功! */ public static String writePreBackXmlData(String code,String msg,List xmlDataList){ String xmlString = null; try { Document document = DocumentHelper.createDocument(); document.setXMLEncoding("UTF-8"); Element object_element = document.addElement(XML_OBJECT); Element code_element = object_element.addElement(XML_CODE); code_element.setText(code); Element msg_element = object_element.addElement(XML_MSG); msg_element.setText(msg); Element datas_element = object_element.addElement(XML_DATAS); if(xmlDataList!=null) { for (XmlData xmlData : xmlDataList) { if(xmlData==null){ continue; } Element data_element = datas_element.addElement(XML_DATA); data_element.addAttribute(XML_UNIQUE,xmlData.getUnique()); data_element.addAttribute(XML_STATE,xmlData.getState()); data_element.addAttribute(XML_NUM,xmlData.getNum()); Element datamsg_element = data_element.addElement(XML_MSG); datamsg_element.setText(xmlData.getMsg()); } } OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(format); writer.write(document); xmlString=document.asXML(); } catch (Exception e) { // TODO: handle exception } return xmlString; } /* 主数据推送的xmlData格式 物品#成品及附件 wuping#cpjfj */ public static String writeSendXmlData(List xmlDataList) { String xmlString = null; try { Document document = DocumentHelper.createDocument(); document.setXMLEncoding("UTF-8"); Element object_element = document.addElement(XML_OBJECT); Element datas_element = object_element.addElement(XML_DATAS); if (xmlDataList != null) { for (XmlData xmlData : xmlDataList) { if (xmlData == null) { continue; } Element data_element = datas_element.addElement(XML_DATA); data_element.addAttribute(XML_UNIQUE, xmlData.getUnique()); data_element.addAttribute(XML_TYPE, xmlData.getType()); data_element.addAttribute(XML_STATE, xmlData.getSendtype()); Element pros_element = data_element.addElement(XML_PROS); List pros = xmlData.getPros(); String lcstatue = null; String id = null; for (Pro pro : pros) { if("lcstatus".equals(pro.getKey())){ lcstatue = pro.getValue(); } if("id".equals(pro.getKey())){ id = pro.getValue(); } Element pro_element = pros_element.addElement(XML_PRO); pro_element.addAttribute(XML_KEY, pro.getKey()); pro_element.addAttribute(XML_VALUE, pro.getValue()); pro_element.addAttribute(XML_MEAN, pro.getKey()); } if(StringUtils.isNotEmpty(lcstatue)){ data_element.addAttribute(XML_STATE, lcstatue); } if(StringUtils.isNotEmpty(id)){ data_element.addAttribute(XML_NUM, id); } Element pro_namepath_element = data_element.addElement(XML_NAMEPATH); pro_namepath_element.setText(xmlData.getNamepath()); Element pro_idpath_element = data_element.addElement(XML_IDPATH); pro_idpath_element.setText(xmlData.getIdpath()); } } OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(format); writer.write(document); xmlString = document.asXML(); } catch (Exception e) { e.printStackTrace(); } return xmlString; } /* 分类数据推送的xmlData格式 shoutao wuping#shoutao 手套 物品#手套 2 wuping */ public static String writeSendXmlData_classify(List xmlDataList) { String xmlString = null; try { Document document = DocumentHelper.createDocument(); document.setXMLEncoding("UTF-8"); Element object_element = document.addElement(XML_OBJECT); Element datas_element = object_element.addElement(XML_DATAS); if (xmlDataList != null) { for (XmlData xmlData : xmlDataList) { if (xmlData == null) { continue; } Element data_element = datas_element.addElement(XML_DATA); Element pro_name_element = data_element.addElement(XML_NAME); pro_name_element.setText(xmlData.getName()); Element pro_namepath_element = data_element.addElement(XML_NAMEPATH); pro_namepath_element.setText(xmlData.getNamepath()); Element pro_id_element = data_element.addElement(XML_ID); pro_id_element.setText(xmlData.getId()); Element pro_idpath_element = data_element.addElement(XML_IDPATH); pro_idpath_element.setText(xmlData.getIdpath()); Element pro_ordernum_element = data_element.addElement(XML_ORDERNUM); pro_ordernum_element.setText(xmlData.getOrderNum()+""); Element pro_parentid_element = data_element.addElement(XML_PARENTID); pro_parentid_element.setText(xmlData.getParentId()==null?"":xmlData.getParentId()); Element pro_state_element = data_element.addElement(XML_STATE); pro_state_element.setText(xmlData.getSendtype()); } } OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(format); writer.write(document); xmlString = document.asXML(); } catch (Exception e) { e.printStackTrace(); } return xmlString; } /* 处理成功 200 接收数据成功! */ public static BackXml readSendXmlData(String xmlData) throws Exception{ BackXml backXml = new BackXml(); Document document = DocumentHelper.parseText(xmlData); Element object_element = document.getRootElement(); Element code_element = object_element.element(XML_CODE); String code = code_element.getText(); Element msg_element = object_element.element(XML_MSG); String msg = msg_element.getText(); Element datas_element = object_element.element(XML_DATAS); List data_elements = datas_element.elements(XML_DATA); List datasList = new ArrayList(); for (Element data_element:data_elements){ XmlData xmlData_return = new XmlData(); Attribute data_unique_attr = data_element.attribute(XML_UNIQUE); String unique = data_unique_attr==null?"":data_unique_attr.getValue();//unique Attribute data_state_attr = data_element.attribute(XML_STATE); String state = data_state_attr==null?"":data_state_attr.getValue();//state Attribute data_num_attr = data_element.attribute(XML_NUM); String num = data_num_attr==null?"":data_num_attr.getValue();//num Element data_msg_elements = data_element.element(XML_MSG); String datamsg = data_msg_elements==null?"":data_msg_elements.getText();//msg xmlData_return.setUnique(unique); xmlData_return.setState(state); xmlData_return.setNum(num); xmlData_return.setMsg(datamsg); datasList.add(xmlData_return); } backXml.setState(code); backXml.setMsg(msg); backXml.setDatas(datasList); return backXml; } /* 推送成功 200 wuping#shoutao true wuping#fanghufu false */ public static BackXml readSendXmlData_classify(String xmlData) throws Exception{ BackXml backXml = new BackXml(); Document document = DocumentHelper.parseText(xmlData); Element object_element = document.getRootElement(); Element code_element = object_element.element(XML_CODE); String code = code_element.getText(); Element msg_element = object_element.element(XML_MSG); String msg = msg_element.getText(); Element datas_element = object_element.element(XML_DATAS); List data_elements = datas_element.elements(XML_DATA); List datasList = new ArrayList(); for (Element data_element:data_elements){ XmlData xmlData_return = new XmlData(); Element data_idpath_elements = data_element.element(XML_IDPATH); String idpath = data_idpath_elements.getText(); Element data_state_elements = data_element.element(XML_STATE); String state = data_state_elements.getText(); Element xml_msg_elements = data_element.element(XML_MSG); String xml_msg = xml_msg_elements.getText(); xmlData_return.setIdpath(idpath); xmlData_return.setMsg(xml_msg); xmlData_return.setState(state); datasList.add(xmlData_return); } backXml.setState(code); backXml.setMsg(msg); backXml.setDatas(datasList); return backXml; } /* 处理成功 200 接收数据成功! */ public static BackXml readSendJsonData(String jsonData) throws Exception{ BackXml backXml = new BackXml(); JSONObject json_root = JSONObject.parseObject(jsonData); String code = json_root.getString(XML_CODE); String msg = json_root.getString(XML_MSG); Object datas_obj = json_root.get(XML_DATAS); List datasList = new ArrayList(); if(datas_obj!=null){ JSONArray datas_arr = (JSONArray)datas_obj; for (Object data_obj:datas_arr){ XmlData xmlData_return = new XmlData(); JSONObject data_json = (JSONObject)data_obj; String unique = data_json.getString(XML_UNIQUE); String state = data_json.getString(XML_STATE); String num = data_json.getString(XML_NUM); String datamsg = data_json.getString(XML_MSG); xmlData_return.setUnique(unique); xmlData_return.setState(state); xmlData_return.setNum(num); xmlData_return.setMsg(datamsg); datasList.add(xmlData_return); } } backXml.setState(code); backXml.setMsg(msg); backXml.setDatas(datasList); return backXml; } //读取数据转换xml数据为map /* */ public static Map readTranXml(String tran_xml,String btmid) throws Exception{ Map retMap = new HashMap(); if(StringUtils.isEmpty(btmid)){ return retMap; } Document document = DocumentHelper.parseText(tran_xml); Element object_element = document.getRootElement(); Element datas_element = object_element.element(XML_DATAS); List data_elements = datas_element.elements(XML_DATA); for (Element data_element:data_elements){ Attribute data_type_attr = data_element.attribute(XML_TYPE); String data_type = data_type_attr==null?"":data_type_attr.getValue(); if(!btmid.equals(data_type)){ continue; } Element data_pros_elements = data_element.element(XML_PROS); List data_pro_elements = data_pros_elements.elements(XML_PRO); for (Element data_pro_element:data_pro_elements) { Map data_pro_map = new HashMap(); Attribute xml_type_attr = data_pro_element.attribute(XML_KEY);//materialtype String xml_type = xml_type_attr==null?"":xml_type_attr.getValue(); Listprop_tran_elements = data_pro_element.elements(XML_PRO_TRAN);//prop_tran for (Element prop_tran_element:prop_tran_elements) { Attribute mdm_key_attr = prop_tran_element.attribute(XML_MDMKEY); String mdm_key = mdm_key_attr==null?"":mdm_key_attr.getValue(); Attribute mdm_value_attr = prop_tran_element.attribute(XML_MDMVALUE); String mdm_value = mdm_value_attr==null?"":mdm_value_attr.getValue(); Attribute system_key_attr = prop_tran_element.attribute(XML_SYSTEMKEY); String system_key = system_key_attr==null?"":system_key_attr.getValue(); Attribute system_value_attr = prop_tran_element.attribute(XML_SYSTEMVALUE); String system_value = system_value_attr==null?"":system_value_attr.getValue(); // data_pro_map.put(XML_MDMKEY,mdm_key); // data_pro_map.put(XML_MDMVALUE,mdm_value); // data_pro_map.put(XML_SYSTEMKEY,system_key); // data_pro_map.put(XML_SYSTEMVALUE,system_value); data_pro_map.put(mdm_key,system_key); data_pro_map.put(mdm_value,system_value); } retMap.put(xml_type,data_pro_map); } } return retMap; } }