package com.qbskj.project.util;

 import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import net.sf.json.JSON;
import net.sf.json.JSONSerializer;
import net.sf.json.xml.XMLSerializer; import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter; /**
* common xml conver utility
*
*/
public class XmlConverUtil { public final static String CDATA_PREFIX = "CDATA_";
/**
* map to xml xml <node><key label="key1">value1</key><key
* label="key2">value2</key>......</node>
*
* @param map
* @return
*/
public static String maptoXml(Map<String,Object> map) {
Document document = DocumentHelper.createDocument();
Element nodeElement = document.addElement("xml");
for (Object obj : map.keySet()) {
Element keyElement = nodeElement.addElement(String.valueOf(obj));
String vlaue = String.valueOf(map.get(obj));
if(vlaue.startsWith(CDATA_PREFIX)){
keyElement.addCDATA(vlaue.replaceAll(CDATA_PREFIX, ""));
}else{
keyElement.setText(vlaue);
}
}
return nodeElement.asXML();
} /**
* list to xml xml <nodes><node><key label="key1">value1</key><key
* label="key2">value2</key>......</node><node><key
* label="key1">value1</key><key
* label="key2">value2</key>......</node></nodes>
*
* @param list
* @return
*/
public static String listtoXml(List list) throws Exception {
Document document = DocumentHelper.createDocument();
Element nodesElement = document.addElement("nodes");
int i = 0;
for (Object o : list) {
Element nodeElement = nodesElement.addElement("node");
if (o instanceof Map) {
for (Object obj : ((Map) o).keySet()) {
Element keyElement = nodeElement.addElement("key");
keyElement.addAttribute("label", String.valueOf(obj));
keyElement.setText(String.valueOf(((Map) o).get(obj)));
}
} else {
Element keyElement = nodeElement.addElement("key");
keyElement.addAttribute("label", String.valueOf(i));
keyElement.setText(String.valueOf(o));
}
i++;
}
return doc2String(document);
} /**
* json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver
* <o><node class="object"><key class="object"
* label="key1">value1</key></node></o>
*
* @param json
* @return
*/
public static String jsontoXml(String json) {
try {
XMLSerializer serializer = new XMLSerializer();
JSON jsonObject = JSONSerializer.toJSON(json);
return serializer.write(jsonObject);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* xml to map xml <node><key label="key1">value1</key><key
* label="key2">value2</key>......</node>
*
* @param xml
* @return
*/
@SuppressWarnings("unchecked")
public static Map<String,Object> xmltoMap(String xml) {
try {
Map<String,Object> map = new HashMap<String,Object>();
Document document = DocumentHelper.parseText(xml);
Element nodeElement = document.getRootElement();
List<Object> node = nodeElement.elements();
for (Iterator<Object> it = node.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
map.put(elm.getName(), elm.getText());
elm = null;
}
node = null;
nodeElement = null;
document = null;
return map;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* xml to list xml <nodes><node><key label="key1">value1</key><key
* label="key2">value2</key>......</node><node><key
* label="key1">value1</key><key
* label="key2">value2</key>......</node></nodes>
*
* @param xml
* @return
*/
public static List xmltoList(String xml) {
try {
List<Map> list = new ArrayList<Map>();
Document document = DocumentHelper.parseText(xml);
Element nodesElement = document.getRootElement();
List nodes = nodesElement.elements();
for (Iterator its = nodes.iterator(); its.hasNext();) {
Element nodeElement = (Element) its.next();
Map map = xmltoMap(nodeElement.asXML());
list.add(map);
map = null;
}
nodes = null;
nodesElement = null;
document = null;
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* xml to json <node><key label="key1">value1</key></node> 转化为
* {"key":{"@label":"key1","#text":"value1"}}
*
* @param xml
* @return
*/
public static String xmltoJson(String xml) {
XMLSerializer xmlSerializer = new XMLSerializer();
return xmlSerializer.read(xml).toString();
} /**
*
* @param document
* @return
*/
public static String doc2String(Document document) {
String s = "";
try {
// 使用输出流来进行转化
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 使用UTF-8编码
OutputFormat format = new OutputFormat(" ", true, "UTF-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
s = out.toString("UTF-8");
} catch (Exception ex) {
ex.printStackTrace();
}
return s;
}
}

XML的几种转换的更多相关文章

  1. C#中常用的读取xml的几种方法(转)

    本文完全来源于http://blog.csdn.net/tiemufeng1122/article/details/6723764,仅作个人学习之用. XML文件是一种常用的文件格式,例如WinFor ...

  2. 简介C#读取XML的两种方式

    简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的 ...

  3. 【收藏用】--切勿转载Java处理XML的三种主流技术及介绍

    原帖地址 : http://www.ibm.com/developerworks/cn/xml/dm-1208gub/ XML (eXtensible Markup Language) 意为可扩展标记 ...

  4. XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

  5. java解析xml的几种方式

    java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...

  6. 使用XML的五种场合,XML基本规则,XML的术语,结构与语法

    在很多研讨会和培训班上我遇到过许多人,他们还不明白为什么要使用XML也不知道如何 在他们的应用中使用XML.一些来自诸如Gartner公司的报告建议说,商业公司不能再做 局外人了,不能对XML置之不理 ...

  7. XML,Object,Json分析转换Xstream采用

    XML,Object,Json转换之浅析Xstream的使用 请尊重他人的劳动成果,转载请注明出处:XML,Object,Json转换之浅析Xstream的使用 XStream的是一个简单的库.主要用 ...

  8. [CXF REST标准实战系列] 一、JAXB xml与javaBean的转换(转)

    转自:[CXF REST标准实战系列] 一.JAXB xml与javaBean的转换 文章Points: 1.不认识到犯错,然后得到永久的教训. 2.认识JAXB 3.代码实战 1.不认识到犯错,然后 ...

  9. SQL Server 中对 FOR XML和FROM的转换处理

    在SQL Server中对XML的再操作转换: 方法1: --生成XML SELECT * FROM [T_BAS_预算科目] FOR XML PATH --把XML转成SQL表 declare @X ...

随机推荐

  1. C#版[击败99.69%的提交] - Leetcode 242. 有效的同构异形词 - 题解

    C#版 - Leetcode 242. 有效的同构异形词 - 题解 Leetcode 242.Valid Anagram 在线提交: https://leetcode.com/problems/val ...

  2. dotnet core开源博客系统XBlog介绍

    XBlog是dotnet core平台下的个人博客开源系统,它只需要通过Copy的方式即可以部署到Linux和windows系统中:如果你有安全证书那只需要简单配置一下即可提供安全的Https服务.接 ...

  3. Docker最全教程——数据库容器化之持久保存数据(十一)

    上一节我们讲述了SQL Server容器化实践(注意,SQL Server现在也支持跨平台),本节将讲述如何持久保存数据,并且接下来将逐步讲解其他数据库(MySql.Redis.Mongodb等等)的 ...

  4. Zuul之Filter详解

    Zuul详解 官方文档:https://github.com/Netflix/zuul/wiki/How-it-Works Zuul的中心是一系列过滤器,能够在HTTP请求和响应的路由过程中执行一系列 ...

  5. Jetson Nano Developer Kit

    The Jetson Nano Developer Kit is an AI computer for learning and for making. ​ 一个推理框架,用于部署模型到嵌入式设备. ...

  6. shared_ptr和动态数组

    std::shared_ptr智能指针是c++11一个相当重要的特性,可以极大地将开发者从资源申请/释放的繁重劳动中解放出来. 然而直到c++17前std::shared_ptr都有一个严重的限制,那 ...

  7. 使用curl制作简易百度搜索

    这几天研究了一下php中的curl类库,做了一个简单的百度搜索,先上代码 <div style="width:200px;height:100px;"> <div ...

  8. Spring注入对象(3)

    2019-03-08/10:45:04 演示:对Product对象,注入一个Category对象 1.创建pojo类 Product类中有对Category对象的setter getter packa ...

  9. Spring boot项目maven的profile多环境配置不自动替换变量的问题解决

    Spring boot项目maven的profile多环境配置不自动替换变量的问题解决   在网上找了好久,配置都很简单,可是我的程序就是不能自动替换变量,最终单独测试,发现原来是引用spring b ...

  10. MyBatis学习---整合SpringMVC

    [目录]