• XML的几种转换


      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 class="object" 
     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 }  
    成功不是终点,失败也并非末日,重要的是前行的勇气!
  • 相关阅读:
    【爬虫】Python获取星巴克所有产品
    【爬虫】Java爬取省市县行政区域统计数据
    【PostgreSQL】下载安装PgSQL
    【Big Data】 DBeaver连接Phoenix
    【SpringMVC】 Controller接收深度复杂对象封装不到的问题
    【MybatisPlus】联表分页查询实现
    【爬虫】Java爬取KFC全国门店信息
    Optional类的初体验
    Oracle版本的xxljob
    idea中Git根据需要还原到指定版本
  • 原文地址:https://www.cnblogs.com/DSH-/p/10791039.html
Copyright © 2020-2023  润新知