XmlToMap.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.dashitech.utils;
  2. import org.dom4j.Document;
  3. import org.dom4j.DocumentHelper;
  4. import org.dom4j.Element;
  5. import java.util.*;
  6. /**
  7. * Created by xuweihua on 2021/3/29.
  8. */
  9. public class XmlToMap {
  10. public static Map<String, Object> Dom2Map(String xmlStr){
  11. Map<String, Object> map = new HashMap<String, Object>();
  12. try{
  13. Document doc= DocumentHelper.parseText(xmlStr);
  14. if(doc == null)
  15. return null;
  16. Element root = doc.getRootElement();
  17. for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
  18. Element e = (Element) iterator.next();
  19. //System.out.println(e.getName());
  20. List list = e.elements();
  21. if(list.size() > 0){
  22. map.put(e.getName(), Dom2Map(e));
  23. }else
  24. map.put(e.getName(), e.getText());
  25. }
  26. return map;
  27. }catch (Exception e){
  28. e.printStackTrace();
  29. }
  30. return null;
  31. }
  32. public static Map Dom2Map(Element e){
  33. Map map = new HashMap();
  34. List list = e.elements();
  35. if(list.size() > 0){
  36. for (int i = 0;i < list.size(); i++) {
  37. Element iter = (Element) list.get(i);
  38. List mapList = new ArrayList();
  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().equals("java.util.ArrayList")){
  44. mapList = new ArrayList();
  45. mapList.add(obj);
  46. mapList.add(m);
  47. }
  48. if(obj.getClass().getName().equals("java.util.ArrayList")){
  49. mapList = (List) obj;
  50. mapList.add(m);
  51. }
  52. map.put(iter.getName(), mapList);
  53. }else
  54. map.put(iter.getName(), m);
  55. }
  56. else{
  57. if(map.get(iter.getName()) != null){
  58. Object obj = map.get(iter.getName());
  59. if(!obj.getClass().getName().equals("java.util.ArrayList")){
  60. mapList = new ArrayList();
  61. mapList.add(obj);
  62. mapList.add(iter.getText());
  63. }
  64. if(obj.getClass().getName().equals("java.util.ArrayList")){
  65. mapList = (List) obj;
  66. mapList.add(iter.getText());
  67. }
  68. map.put(iter.getName(), mapList);
  69. }else
  70. map.put(iter.getName(), iter.getText());
  71. }
  72. }
  73. }else
  74. map.put(e.getName(), e.getText());
  75. return map;
  76. }
  77. }