package com.wanbang.wbyyb.common.util; import com.alibaba.fastjson.JSONObject; import com.wanbang.wbyyb.common.constant.ErrorEnum; import com.wanbang.wbyyb.common.exception.BusinessException; import com.wanbang.wbyyb.service.payment.impl.PaymentServiceImpl; import org.apache.commons.codec.digest.DigestUtils; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.util.StringUtils; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class XmlUtils { private static final Logger logger = LoggerFactory.getLogger(PaymentServiceImpl.class); /** * 根据xml标签名的ASCII码正序排列的xml * @param filePath * @return */ public static Document getXml(String filePath){ Document document = null; try{ Resource resource = null; if (!StringUtils.isEmpty(filePath)) resource = new ClassPathResource(filePath); else throw new BusinessException(ErrorEnum.ERROR_PARAM); File file = resource.getFile(); /** * 读取xml转有序map */ SAXReader reader = new SAXReader(); Document doc = reader.read(file); Element root = doc.getRootElement(); Iterator iterator = root.elementIterator(); Map<String,Object> map = new TreeMap<>(); while (iterator.hasNext()) { Element element = (Element) iterator.next(); String key = element.getName(); String value = element.getText(); map.put(key, value); } /** * 有序map转xml */ document = DocumentHelper.createDocument(); Element newRoot = document.addElement("xml"); Set<String> keys = map.keySet(); for(String k:keys) { newRoot.addElement(k).addText(map.get(k).toString()); } } catch (IOException e) { logger.error("com.wanbang.wbyyb.service.payment.impl: ",e); } catch (DocumentException e) { logger.error("com.wanbang.wbyyb.service.payment.impl:",e); } return document; }public static Object xml2Json(String xmlStr){ JSONObject jsonObject = new JSONObject(); try { Document document = DocumentHelper.parseText(xmlStr); Element element = document.getRootElement(); Iterator iterator = element.elementIterator(); while (iterator.hasNext()) { Element ele = (Element)iterator.next(); jsonObject.put(ele.getName(), ele.getText()); } } catch (DocumentException e) { e.printStackTrace(); } return jsonObject; }
}
@Test public void createTest() { Document doc = DocumentHelper.createDocument(); //创建一个名为xml的根节点,因为是第一个创建,所以是根节点,再通过doc创建一个则会报错。 Element root = doc.addElement("xml"); Element codeEle = root.addElement("return_code"); Element msg = root.addElement("return_msg"); codeEle.addCDATA("SUCCESS"); //生成结果<return_code><![CDATA[SUCCESS]]></return_code> codeEle.addAttribute("id", "101"); //添加属性 msg.setText("SUCCESS"); //生成结果<return_code>SUCCESS</return_code> msg.setText("<![CDATA[SUCCESS]]>"); //生成结果<return_msg><![CDATA[SUCCESS]]></return_msg> System.out.println(doc.asXML()); //xml转String }