dom4j 常用操作
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
}
dom4j 常用操作的更多相关文章
- 【三】用Markdown写blog的常用操作
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...
- php模拟数据库常用操作效果
test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...
- Mac OS X常用操作入门指南
前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右) =鼠标左键 control+按下 ...
- mysql常用操作语句
mysql常用操作语句 1.mysql -u root -p 2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...
- nodejs配置及cmd常用操作
一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- python 异常处理、文件常用操作
异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm
- byte数据的常用操作函数[转发]
/// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
随机推荐
- 解决SublimeText 3无法安装Package Control的问题
"GOOD 解决SublimeText 3无法安装Package Control的问题 2019年4月6日Sublime Text3更新至3.2.1(BUILD 3207)版本,Sublim ...
- Android Activity生命周期(转)
转自 http://blog.csdn.net/android_tutor/article/details/5772285
- SqlServer 分页批按时间排序
sql server 分页按时间排序 select * from (select<include refid="Base_Column_List"/>, ROW_NUM ...
- ShareSDK集成遇到问题
解决方案
- NFX UNISTACK 介绍
学习.NET Core和ASP.NET Core,偶然搜索到NFX UNISTACK,现翻译一下Readme,工程/原文:https://github.com/aumcode/nfx NFX Serv ...
- 记一下一道关于finally的题
题目: public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { Syste ...
- wmq的队伍 BIT优化dp
http://oj.xjtuacm.com/problem/14/ wmq的队伍 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 2000m ...
- Railroad UVALive - 4888 记忆化搜索
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- ZooKeeper理论知识
前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什么地步呢? 我本人曾 ...
- ecshop属性 {$goods.goods_attr|nl2br} 标签的赋值相关
1.nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />). 2. 如果要向{$goods.goods_attr|nl2br}赋新值,这个值是保存 ...