HashMapToStringXml.java
package pritom; import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by pritom on 5/05/14. */ public class HashMapToStringXml { public static void main(String[] args) { Map<Object, Object> hashMap = new HashMap<Object, Object>(); hashMap.put("firstName", "Pritom"); hashMap.put("lastName", "Kumar"); Map<Object, Object> secondMap = new HashMap<Object, Object>(); secondMap.put("timeIn", "8:00"); secondMap.put("timeOut", "5:00"); hashMap.put("timing", secondMap); List<Object> list = new ArrayList<Object>(); list.add(20); list.add(30); list.add(40); list.add(secondMap); hashMap.put("contents", list); /* Map to XML and reverse */ String mapToString = objectToString(hashMap); Map parsedMap = (Map) stringToObject(mapToString); System.out.println("Map to XML: \n" + mapToString + "\nXML to map:\n" + parsedMap); /* List to XML and reverse */ String listToString = objectToString(list); List parsedList = (List) stringToObject(listToString); System.out.println("List to XML: \n" + listToString + "\nXML to list:\n" + parsedList); } public static String objectToString(Object hashMap) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); XMLEncoder xmlEncoder = new XMLEncoder(bos); xmlEncoder.writeObject(hashMap); xmlEncoder.close(); return bos.toString(); } public static Object stringToObject(String string) { XMLDecoder xmlDecoder = new XMLDecoder(new ByteArrayInputStream(string.getBytes())); return xmlDecoder.readObject(); } }
Output
Map to XML: <?xml version="1.0" encoding="UTF-8"?> <java version="1.7.0_45" class="java.beans.XMLDecoder"> <object class="java.util.HashMap"> <void method="put"> <string>lastName</string> <string>Kumar</string> </void> <void method="put"> <string>contents</string> <object class="java.util.ArrayList"> <void method="add"> <int>20</int> </void> <void method="add"> <int>30</int> </void> <void method="add"> <int>40</int> </void> <void method="add"> <object class="java.util.HashMap" id="HashMap0"> <void method="put"> <string>timeOut</string> <string>5:00</string> </void> <void method="put"> <string>timeIn</string> <string>8:00</string> </void> </object> </void> </object> </void> <void method="put"> <string>timing</string> <object idref="HashMap0"/> </void> <void method="put"> <string>firstName</string> <string>Pritom</string> </void> </object> </java> XML to map: { lastName=Kumar, contents=[ 20, 30, 40, { timeOut=5:00, timeIn=8:00 } ], firstName=Pritom, timing={ timeOut=5:00, timeIn=8:00 } } List to XML: <?xml version="1.0" encoding="UTF-8"?> <java version="1.7.0_45" class="java.beans.XMLDecoder"> <object class="java.util.ArrayList"> <void method="add"> <int>20</int> </void> <void method="add"> <int>30</int> </void> <void method="add"> <int>40</int> </void> <void method="add"> <object class="java.util.HashMap"> <void method="put"> <string>timeOut</string> <string>5:00</string> </void> <void method="put"> <string>timeIn</string> <string>8:00</string> </void> </object> </void> </object> </java> XML to list: [20, 30, 40, {timeOut=5:00, timeIn=8:00}]