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>&lt;![CDATA[SUCCESS]]&gt;</return_msg>
System.out.println(doc.asXML()); //xml转String
}

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. 解决SublimeText 3无法安装Package Control的问题

    "GOOD 解决SublimeText 3无法安装Package Control的问题 2019年4月6日Sublime Text3更新至3.2.1(BUILD 3207)版本,Sublim ...

  2. Android Activity生命周期(转)

    转自 http://blog.csdn.net/android_tutor/article/details/5772285

  3. SqlServer 分页批按时间排序

    sql server 分页按时间排序 select * from (select<include refid="Base_Column_List"/>, ROW_NUM ...

  4. ShareSDK集成遇到问题

    解决方案

  5. NFX UNISTACK 介绍

    学习.NET Core和ASP.NET Core,偶然搜索到NFX UNISTACK,现翻译一下Readme,工程/原文:https://github.com/aumcode/nfx NFX Serv ...

  6. 记一下一道关于finally的题

     题目: public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { Syste ...

  7. wmq的队伍 BIT优化dp

    http://oj.xjtuacm.com/problem/14/ wmq的队伍 发布时间: 2017年4月9日 17:06   最后更新: 2017年4月9日 17:07   时间限制: 2000m ...

  8. Railroad UVALive - 4888 记忆化搜索

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  9. ZooKeeper理论知识

    前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢? 我本人曾 ...

  10. ecshop属性 {$goods.goods_attr|nl2br} 标签的赋值相关

    1.nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />). 2. 如果要向{$goods.goods_attr|nl2br}赋新值,这个值是保存 ...