1. package com.wanbang.wbyyb.common.util;
  2.  
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.wanbang.wbyyb.common.constant.ErrorEnum;
  5. import com.wanbang.wbyyb.common.exception.BusinessException;
  6. import com.wanbang.wbyyb.service.payment.impl.PaymentServiceImpl;
  7. import org.apache.commons.codec.digest.DigestUtils;
  8. import org.dom4j.Document;
  9. import org.dom4j.DocumentException;
  10. import org.dom4j.DocumentHelper;
  11. import org.dom4j.Element;
  12. import org.dom4j.io.SAXReader;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.core.io.ClassPathResource;
  16. import org.springframework.core.io.Resource;
  17. import org.springframework.util.StringUtils;
  18.  
  19. import java.io.File;
  20. import java.io.IOException;
  21. import java.util.Iterator;
  22. import java.util.Map;
  23. import java.util.Set;
  24. import java.util.TreeMap;
  25.  
  26. public class XmlUtils {
  27. private static final Logger logger = LoggerFactory.getLogger(PaymentServiceImpl.class);
  28.  
  29. /**
  30. * 根据xml标签名的ASCII码正序排列的xml
  31. * @param filePath
  32. * @return
  33. */
  34. public static Document getXml(String filePath){
  35. Document document = null;
  36. try{
  37. Resource resource = null;
  38. if (!StringUtils.isEmpty(filePath))
  39. resource = new ClassPathResource(filePath);
  40. else
  41. throw new BusinessException(ErrorEnum.ERROR_PARAM);
  42.  
  43. File file = resource.getFile();
  44.  
  45. /**
  46. * 读取xml转有序map
  47. */
  48. SAXReader reader = new SAXReader();
  49. Document doc = reader.read(file);
  50. Element root = doc.getRootElement();
  51. Iterator iterator = root.elementIterator();
  52. Map<String,Object> map = new TreeMap<>();
  53. while (iterator.hasNext()) {
  54. Element element = (Element) iterator.next();
  55. String key = element.getName();
  56. String value = element.getText();
  57. map.put(key, value);
  58. }
  59.  
  60. /**
  61. * 有序map转xml
  62. */
  63. document = DocumentHelper.createDocument();
  64. Element newRoot = document.addElement("xml");
  65. Set<String> keys = map.keySet();
  66. for(String k:keys) {
  67. newRoot.addElement(k).addText(map.get(k).toString());
  68. }
  69. } catch (IOException e) {
  70. logger.error("com.wanbang.wbyyb.service.payment.impl: ",e);
  71. } catch (DocumentException e) {
  72. logger.error("com.wanbang.wbyyb.service.payment.impl:",e);
  73. }
  74. return document;
  75. }public static Object xml2Json(String xmlStr){
  76. JSONObject jsonObject = new JSONObject();
  77. try {
  78. Document document = DocumentHelper.parseText(xmlStr);
  79. Element element = document.getRootElement();
  80. Iterator iterator = element.elementIterator();
  81. while (iterator.hasNext()) {
  82. Element ele = (Element)iterator.next();
  83. jsonObject.put(ele.getName(), ele.getText());
  84. }
  85. } catch (DocumentException e) {
  86. e.printStackTrace();
  87. }
  88. return jsonObject;
  89. }
  90.  
  1.  
  1. }
  1. @Test
  2. public void createTest() {
  3. Document doc = DocumentHelper.createDocument();
  4. //创建一个名为xml的根节点,因为是第一个创建,所以是根节点,再通过doc创建一个则会报错。
  5. Element root = doc.addElement("xml");
  6. Element codeEle = root.addElement("return_code");
  7. Element msg = root.addElement("return_msg");
  8. codeEle.addCDATA("SUCCESS"); //生成结果<return_code><![CDATA[SUCCESS]]></return_code>
  9. codeEle.addAttribute("id", "101"); //添加属性
  10. msg.setText("SUCCESS"); //生成结果<return_code>SUCCESS</return_code>
  11. msg.setText("<![CDATA[SUCCESS]]>"); //生成结果<return_msg>&lt;![CDATA[SUCCESS]]&gt;</return_msg>
  12. System.out.println(doc.asXML()); //xml转String
  13. }

dom4j 常用操作的更多相关文章

  1. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  2. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  3. Mac OS X常用操作入门指南

    前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右)            =鼠标左键 control+按下        ...

  4. mysql常用操作语句

    mysql常用操作语句 1.mysql -u root -p   2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...

  5. nodejs配置及cmd常用操作

    一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...

  6. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  7. python 异常处理、文件常用操作

    异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm

  8. byte数据的常用操作函数[转发]

    /// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...

  9. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

随机推荐

  1. Nginx 405 not allowed最简单快速解决办法

    Apache.IIS.Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误. server { list ...

  2. python连接mysql时连接不到test文件夹怎么办

    最新版mysql安装后默认是没有test文件夹的,这时候需要我们自己创建一个test文件夹, 文件默认路径如下    C:\ProgramData\MySQL\MySQL Server 5.7\Dat ...

  3. [題解](最短路)luogu_P1119災後重建

    一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...

  4. 使用JMeter上传文件

    使用JMeter录制文件上载 创建JMeter测试计划的最简单方法是使用HTTP(s)测试脚本记录器记录相应的请求.JMeter充当代理服务器,捕获Web浏览器与被测应用程序(AUT)之间的所有流量, ...

  5. dubbo与springboot的三种整合方式

    SpringBoot与dubbo整合的三种方式:1.导入dubbo-starter,在application.properties配置属性,使用@Service暴露服务,使用@Reference引用服 ...

  6. LVDT

    什么是 LVDT? LVDT 是线性可变差动变压器的缩写. 它是一种常见类型的机电传感器,可将其以机械方式耦合的物体的直线运动转换为对应的电气信号.LVDT 线性位移传感器随时可用,可以测量各种移动, ...

  7. 数据库 join

    数据库 join 最近有个项目用到了数据库,写 sql 时有联表查询,不知道怎么写,怎过滤,查了一些资料,补充了一些知识点. 以下是链接: 维基百科 JOIN关联表中ON,WHERE后面跟条件的区别 ...

  8. 移动端REM布局模板(阿里高清方案)

    移动端REM布局模板(阿里高清方案),蛮好的,转自: http://www.jianshu.com/p/985d26b40199 . <!DOCTYPE html> <html la ...

  9. 关于h5中背景音乐的自动播放

    音乐的自动播放属性,这里也介绍一下: <audio controls="controls" autoplay="autoplay"> <sou ...

  10. Java类的静态块の一

    类的静态块在类加载时候执行,执行早于构造函数,并且只执行一次. 下面这个例子可以帮助理解: package untility; public class A { // 静态块 static { A c ...