java转换xml、list、map和json

xiaoxiao2021-02-27  288

很多朋友遇到xml,map和json互转的问题,在开发中xml和json越来越重要了。我就把我的工具类贴上来。

package com.huize.pluto.common; 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; import com.huize.InsScheduler.ReadFromFile; public class XmlConverUtil { /** * map to xml xml <node><key label="key1">value1</key><key * label="key2">value2</key>......</node> * * @param map * @return */ public static String maptoXml(Map map) { Document document = DocumentHelper.createDocument(); Element nodeElement = document.addElement("node"); for (Object obj : map.keySet()) { Element keyElement = nodeElement.addElement("key"); keyElement.addAttribute("label", String.valueOf(obj)); keyElement.setText(String.valueOf(map.get(obj))); } return doc2String(document); } /** * 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 */ public static Map xmltoMap(String xml) { try { Map map = new HashMap(); Document document = DocumentHelper.parseText(xml); Element nodeElement = document.getRootElement(); List node = nodeElement.elements(); for (Iterator it = node.iterator(); it.hasNext();) { Element elm = (Element) it.next(); map.put(elm.attributeValue("label"), 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; } public static void main(String args[]){ // String json="{\"OperatorId\":\"\",\"PHMail\":\"J-MAY@163.COM\",\"PHName\":\"李忠兴 LiZhongXing\",\"PHIdNoType\":\"Passport\",\"PHIdNo\":\"E69987564\",\"PHBirth\":\"1972-11-01\",\"PHTel\":\"17012348900\",\"PHAddr\":\"\",\"PHPostCd\":\"\",\"carNo\":\"\",\"PlanID\":\"3806\",\"DateStart\":\"2017-03-25\",\"DateEnd\":\"2017-04-07\",\"AirCode\":\"\",\"Departure\":\"广州\",\"Destination\":\"捷克等申根国家 Czech,Schengen States \",\"FeeType\":\"\",\"Suffix\":null,\"SerialNo\":\"HZ00668795331370667\",\"Insured\":[{\"Name\":\"李忠兴 LiZhongXing\",\"IdNoType\":\"Passport\",\"IdNo\":\"E69987564\",\"BirthDt\":\"1972-11-01\",\"Mail\":\"\",\"Addr\":\"\",\"PostCd\":\"\",\"Tel\":\"\",\"Sex\":\"0\",\"Assign\":\"legal\",\"OccupationLevel\":null,\"Occupation\":null,\"Bnfs\":[]}]}"; // // String p_file="./config/orgin.xml"; // String p_convert_file="./config/orgin_convert.xml"; // String xml=jsontoXml(json); // System.out.println(xml); // // WriteFile.WriteStrToFile(xml, p_file); // xmlOrder.xmlConvert(p_file, p_convert_file); // // String abc=ReadFromFile.readTxtFile(p_convert_file); // String formatxml=XmlFormatter.formatXml(abc); // // WriteFile.WriteStrToFile(formatxml, p_convert_file); String xml="./config/waiwang.xml"; String abc=ReadFromFile.readTxtFile(xml); System.out.println(xmltoJson(abc)); } } 后来查了一下发现是包有错,使用json常用到的包有以下六个。

commons-logging-1.0.4.jar   commons-lang-2.3.jar   commons-collections-3.2.jar   commons-beanutils-1.7.0.jar   json-lib-2.2.1-jdk15.jar   ezmorph-1.0.4.jar  

原文地址:http://blog.csdn.net/arjick/article/details/6251777

转载请注明原文地址: https://www.6miu.com/read-3023.html

最新回复(0)