本文为转载:http://blog.sina.com.cn/s/blog_6145ed810100z164.html 原文地址。
自己仅作备忘录方便查找留了一份。
这是解析Xml 的辅助类
1 package com.zwr.www.util; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.Iterator; 6 import java.util.List; 7 import java.util.Map; 8 9 import org.dom4j.Document; 10 import org.dom4j.Element; 11 12 public class XmlUtil { 13 @SuppressWarnings({ "rawtypes" }) 14 public static Map<String, Object> Dom2Map(Document doc) { 15 Map<String, Object> map = new HashMap<String, Object>(); 16 if (doc == null) 17 return map; 18 Element root = doc.getRootElement(); 19 for (Iterator iterator = root.elementIterator(); iterator.hasNext();) { 20 Element e = (Element) iterator.next(); 21 List list = e.elements(); 22 if (list.size() > 0) { 23 map.put(e.getName(), Dom2Map(e)); 24 } else 25 map.put(e.getName(), e.getText()); 26 } 27 return map; 28 } 29 30 @SuppressWarnings({ "unchecked", "rawtypes" }) 31 public static Map Dom2Map(Element e) { 32 Map map = new HashMap(); 33 List list = e.elements(); 34 if (list.size() > 0) { 35 for (int i = 0; i < list.size(); i++) { 36 Element iter = (Element) list.get(i); 37 List mapList = new ArrayList(); 38 39 if (iter.elements().size() > 0) { 40 Map m = Dom2Map(iter); 41 if (map.get(iter.getName()) != null) { 42 Object obj = map.get(iter.getName()); 43 if (!obj.getClass().getName() 44 .equals("java.util.ArrayList")) { 45 mapList = new ArrayList(); 46 mapList.add(obj); 47 mapList.add(m); 48 } 49 if (obj.getClass().getName() 50 .equals("java.util.ArrayList")) { 51 mapList = (List) obj; 52 mapList.add(m); 53 } 54 map.put(iter.getName(), mapList); 55 } else 56 map.put(iter.getName(), m); 57 } else { 58 if (map.get(iter.getName()) != null) { 59 Object obj = map.get(iter.getName()); 60 if (!obj.getClass().getName() 61 .equals("java.util.ArrayList")) { 62 mapList = new ArrayList(); 63 mapList.add(obj); 64 mapList.add(iter.getText()); 65 } 66 if (obj.getClass().getName() 67 .equals("java.util.ArrayList")) { 68 mapList = (List) obj; 69 mapList.add(iter.getText()); 70 } 71 map.put(iter.getName(), mapList); 72 } else 73 map.put(iter.getName(), iter.getText()); 74 } 75 } 76 } else 77 map.put(e.getName(), e.getText()); 78 return map; 79 } 80 }