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=( ) 数组用小括号括起,数组元 ...
随机推荐
- Nginx 405 not allowed最简单快速解决办法
Apache.IIS.Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误. server { list ...
- python连接mysql时连接不到test文件夹怎么办
最新版mysql安装后默认是没有test文件夹的,这时候需要我们自己创建一个test文件夹, 文件默认路径如下 C:\ProgramData\MySQL\MySQL Server 5.7\Dat ...
- [題解](最短路)luogu_P1119災後重建
一道好題,然而看題解做的...... floyed的實質:只經過前k個點i到j的最短路,原狀態轉移方程為 f [ k ] [ i ] [ j ]=min( f[ k-1 ] [ i ] [ j ],f ...
- 使用JMeter上传文件
使用JMeter录制文件上载 创建JMeter测试计划的最简单方法是使用HTTP(s)测试脚本记录器记录相应的请求.JMeter充当代理服务器,捕获Web浏览器与被测应用程序(AUT)之间的所有流量, ...
- dubbo与springboot的三种整合方式
SpringBoot与dubbo整合的三种方式:1.导入dubbo-starter,在application.properties配置属性,使用@Service暴露服务,使用@Reference引用服 ...
- LVDT
什么是 LVDT? LVDT 是线性可变差动变压器的缩写. 它是一种常见类型的机电传感器,可将其以机械方式耦合的物体的直线运动转换为对应的电气信号.LVDT 线性位移传感器随时可用,可以测量各种移动, ...
- 数据库 join
数据库 join 最近有个项目用到了数据库,写 sql 时有联表查询,不知道怎么写,怎过滤,查了一些资料,补充了一些知识点. 以下是链接: 维基百科 JOIN关联表中ON,WHERE后面跟条件的区别 ...
- 移动端REM布局模板(阿里高清方案)
移动端REM布局模板(阿里高清方案),蛮好的,转自: http://www.jianshu.com/p/985d26b40199 . <!DOCTYPE html> <html la ...
- 关于h5中背景音乐的自动播放
音乐的自动播放属性,这里也介绍一下: <audio controls="controls" autoplay="autoplay"> <sou ...
- Java类的静态块の一
类的静态块在类加载时候执行,执行早于构造函数,并且只执行一次. 下面这个例子可以帮助理解: package untility; public class A { // 静态块 static { A c ...