XML的几种转换

摘要:
1包com.qbskj.project.util;23importjava.io.ByteArrayOutputStream;4导入java.util.ArrayList;5importjava.util.HashMap;6导入java.util.Iterator;7导入java.util.List;8导入java.util.Map;910进口
  1 package com.qbskj.project.util;
  2 
  3 import java.io.ByteArrayOutputStream;
  4 import java.util.ArrayList;
  5 import java.util.HashMap;
  6 import java.util.Iterator;
  7 import java.util.List;
  8 import java.util.Map;
  9 
 10 import net.sf.json.JSON;
 11 import net.sf.json.JSONSerializer;
 12 import net.sf.json.xml.XMLSerializer;
 13 
 14 import org.dom4j.Document;
 15 import org.dom4j.DocumentHelper;
 16 import org.dom4j.Element;
 17 import org.dom4j.io.OutputFormat;
 18 import org.dom4j.io.XMLWriter;
 19   
 20 /** 
 21  * common xml conver utility 
 22  *  
 23  */  
 24 public class XmlConverUtil {  
 25     
 26     public final static String CDATA_PREFIX = "CDATA_";
 27     /** 
 28      * map to xml xml <node><key label="key1">value1</key><key 
 29      * label="key2">value2</key>......</node> 
 30      *  
 31      * @param map 
 32      * @return 
 33      */  
 34     public static String maptoXml(Map<String,Object> map) {  
 35         Document document = DocumentHelper.createDocument();  
 36         Element nodeElement = document.addElement("xml");  
 37         for (Object obj : map.keySet()) {  
 38             Element keyElement = nodeElement.addElement(String.valueOf(obj));
 39             String vlaue = String.valueOf(map.get(obj));
 40             if(vlaue.startsWith(CDATA_PREFIX)){
 41                 keyElement.addCDATA(vlaue.replaceAll(CDATA_PREFIX, ""));
 42             }else{
 43                 keyElement.setText(vlaue);
 44             }
 45         }  
 46         return nodeElement.asXML();  
 47     }  
 48   
 49     /** 
 50      * list to xml xml <nodes><node><key label="key1">value1</key><key 
 51      * label="key2">value2</key>......</node><node><key 
 52      * label="key1">value1</key><key 
 53      * label="key2">value2</key>......</node></nodes> 
 54      *  
 55      * @param list 
 56      * @return 
 57      */  
 58     public static String listtoXml(List list) throws Exception {  
 59         Document document = DocumentHelper.createDocument();  
 60         Element nodesElement = document.addElement("nodes");  
 61         int i = 0;  
 62         for (Object o : list) {  
 63             Element nodeElement = nodesElement.addElement("node");  
 64             if (o instanceof Map) {  
 65                 for (Object obj : ((Map) o).keySet()) {  
 66                     Element keyElement = nodeElement.addElement("key");  
 67                     keyElement.addAttribute("label", String.valueOf(obj));  
 68                     keyElement.setText(String.valueOf(((Map) o).get(obj)));  
 69                 }  
 70             } else {  
 71                 Element keyElement = nodeElement.addElement("key");  
 72                 keyElement.addAttribute("label", String.valueOf(i));  
 73                 keyElement.setText(String.valueOf(o));  
 74             }  
 75             i++;  
 76         }  
 77         return doc2String(document);  
 78     }  
 79   
 80     /** 
 81      * json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver 
 82      * <o><node class="object"><key   
 83      * label="key1">value1</key></node></o> 
 84      *  
 85      * @param json 
 86      * @return 
 87      */  
 88     public static String jsontoXml(String json) {  
 89         try {  
 90             XMLSerializer serializer = new XMLSerializer();  
 91             JSON jsonObject = JSONSerializer.toJSON(json);  
 92             return serializer.write(jsonObject);  
 93         } catch (Exception e) {  
 94             e.printStackTrace();  
 95         }  
 96         return null;  
 97     }  
 98   
 99     /** 
100      * xml to map xml <node><key label="key1">value1</key><key 
101      * label="key2">value2</key>......</node> 
102      *  
103      * @param xml 
104      * @return 
105      */  
106     @SuppressWarnings("unchecked")
107     public static Map<String,Object> xmltoMap(String xml) {  
108         try {  
109             Map<String,Object> map = new HashMap<String,Object>();  
110             Document document = DocumentHelper.parseText(xml);  
111             Element nodeElement = document.getRootElement();  
112             List<Object> node = nodeElement.elements();  
113             for (Iterator<Object> it = node.iterator(); it.hasNext();) {  
114                 Element elm = (Element) it.next();  
115                 map.put(elm.getName(), elm.getText());  
116                 elm = null;  
117             }  
118             node = null;  
119             nodeElement = null;  
120             document = null;  
121             return map;  
122         } catch (Exception e) {  
123             e.printStackTrace();  
124         }  
125         return null;  
126     }  
127   
128     /** 
129      * xml to list xml <nodes><node><key label="key1">value1</key><key 
130      * label="key2">value2</key>......</node><node><key 
131      * label="key1">value1</key><key 
132      * label="key2">value2</key>......</node></nodes> 
133      *  
134      * @param xml 
135      * @return 
136      */  
137     public static List xmltoList(String xml) {  
138         try {  
139             List<Map> list = new ArrayList<Map>();  
140             Document document = DocumentHelper.parseText(xml);  
141             Element nodesElement = document.getRootElement();  
142             List nodes = nodesElement.elements();  
143             for (Iterator its = nodes.iterator(); its.hasNext();) {  
144                 Element nodeElement = (Element) its.next();  
145                 Map map = xmltoMap(nodeElement.asXML());  
146                 list.add(map);  
147                 map = null;  
148             }  
149             nodes = null;  
150             nodesElement = null;  
151             document = null;  
152             return list;  
153         } catch (Exception e) {  
154             e.printStackTrace();  
155         }  
156         return null;  
157     }  
158   
159     /** 
160      * xml to json <node><key label="key1">value1</key></node> 转化为 
161      * {"key":{"@label":"key1","#text":"value1"}} 
162      *  
163      * @param xml 
164      * @return 
165      */  
166     public static String xmltoJson(String xml) {  
167         XMLSerializer xmlSerializer = new XMLSerializer();  
168         return xmlSerializer.read(xml).toString();  
169     }  
170   
171     /** 
172      *  
173      * @param document 
174      * @return 
175      */  
176     public static String doc2String(Document document) {  
177         String s = "";  
178         try {  
179             // 使用输出流来进行转化  
180             ByteArrayOutputStream out = new ByteArrayOutputStream();  
181             // 使用UTF-8编码  
182             OutputFormat format = new OutputFormat("   ", true, "UTF-8");  
183             XMLWriter writer = new XMLWriter(out, format);  
184             writer.write(document);  
185             s = out.toString("UTF-8");  
186         } catch (Exception ex) {  
187             ex.printStackTrace();  
188         }  
189         return s;  
190     }  
191 }  

免责声明:文章转载自《XML的几种转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java实现 “ 将数字金额转为大写中文金额 ”利用Travis CI+GitHub实现持续集成和自动部署下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android界面布局

(一)LinearLayout界面编排模式 他的格式是按照线性顺序,由上往下或右左往右,逐一排列界面组件。 layout_中的“match_parent”表示要填满他所在的外框,而“wrap_content”表示它的大小只要满足内部所包含的界面组件即可。 android:orientation:“horizontal”表示排列方式为水平,而“vertica...

Swing菜单与工具栏(二)

6.1.4 JMenuItem类 JMenuItem组件是用户可以在菜单栏上选择的预定义组件。作为AbstractButton的子类,JMenuItem是一个特殊的按钮组件,其行为类似于JButton。除了作为AbstractButton的子类,JMenuItem类共享JButton的数据模型(ButtonModel接口与DefaultButtonMode...

【用户行为分析】-Java端埋点

需求 在Java后端登录处埋点,获取的事件属性包括:是否成功,登录方式以及神策预置属性。并进行用户ID的打通,使用神策接口把用户匿名ID和登录ID进行打通。 什么是用户ID打通? 用户有时会再注册或登录之前,会在页面进行一些操作,此时会获取一个匿名ID(设备ID或其他)作为用户标识;在用户登录后,会用登录ID作为用户标识;在用户ID打通后,也就是匿名ID和...

QQ会员AMS平台PHP7升级实践

作者:徐汉彬链接:https://zhuanlan.zhihu.com/p/21493018来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。QQ会员活动运营平台(AMS),是QQ会员增值运营业务的重要载体之一,承担海量活动运营的Web系统。AMS是一个主要采用PHP语言实现的活动运营平台, CGI日请求3亿左右,高峰期达到8亿...

springMVC学习--day02

响应 返回字符串以及void的情况 1.返回字符串 <br> <a href="responseController/returnString">returnString</a> <br> 2.没有返回值 <br> <a href="responseController/returnVoid...

C++问题少年系列-STL相关

目录 STL是什么 OOP与GP Malloc STL中共有几种类型的迭代器 随机访问意味着内存连续吗 逆向迭代器rbegin是否等于end 类型萃取 std::remove_if,std::find_if,std::find和std::find_if的区别是什么 std::remove的实现 std::remove_if的实现 头文件algo...