XML格式化及解析

XML格式化工具:notepad++   下载地址 http://rj.baidu.com/soft/detail/13478.html?ald    一个教程地址:http://jingyan.baidu.com/album/4b07be3c69172648b380f383.html  

一个很好的notepad教程地址: http://www.crifan.com/files/doc/docbook/rec_soft_npp/release/htmls/npp_func_add_comment.html

 

 

一个解析xml 成map的简单的工具类,只支持如下如下格式化的xml 

1 <object>
2     <栏目>李树鹏</栏目>
3     <request_day>22</request_day>
4     <day>22</day>
5     <name>tttt</name>
6 </object>

XMLValueObject类的全部代码:

  1 import java.io.StringReader;
  2 import java.util.ArrayList;
  3 import java.util.LinkedHashMap;
  4 import java.util.List;
  5 import java.util.Map;
  6 import org.apache.commons.lang.StringUtils;
  7 import org.apache.log4j.Logger;
  8 import org.dom4j.Document;
  9 import org.dom4j.DocumentException;
 10 import org.dom4j.DocumentHelper;
 11 import org.dom4j.Element;
 12 import org.dom4j.io.SAXReader;
 13 
 14 public class XMLValueObject implements java.io.Serializable {
 15 
 16     private static final long serialVersionUID = -3163892375347045824L;
 17 
 18     private static Logger logger = Logger.getLogger(XMLValueObject.class);
 19 
 20     private Map<String, List<String>> map;
 21 
 22     public XMLValueObject() {
 23         map = new LinkedHashMap<String, List<String>>();
 24     }
 25 
 26     public void put(String key, String value) {
 27         if (value == null) {
 28             return;
 29         }
 30 
 31         List<String> list = map.get(key);
 32         if (list == null) {
 33             list = new ArrayList<String>();
 34             map.put(key, list);
 35         }
 36         list.removeAll(list);
 37         list.add(value);
 38     }
 39 
 40     public void put(String key, String[] values) {
 41         if (values == null || values.length == 0) {
 42             return;
 43         }
 44 
 45         List<String> list = map.get(key);
 46         if (list == null) {
 47             list = new ArrayList<String>();
 48             map.put(key, list);
 49         }
 50         for (String value : values) {
 51             list.add(value);
 52         }
 53     }
 54 
 55     public Object get(String key) {
 56         List<String> list = map.get(key);
 57         return list == null || list.isEmpty() ? null : list.get(0);
 58     }
 59 
 60     public Object[] getArray(String key) {
 61         List<String> list = map.get(key);
 62         return list == null ? new String[0] : list.toArray(new String[0]);
 63     }
 64 
 65     @SuppressWarnings("unchecked")
 66     public void fromXML(String xml) {
 67      try{
 68          if (StringUtils.isEmpty(xml)) {
 69              return;
 70          }
 71         StringReader in = new StringReader(xml);
 72         SAXReader reader = new SAXReader(false);
 73         Document doc = null;
 74         try {
 75             doc = reader.read(in);
 76         }
 77         catch (DocumentException e) {
 78             logger.error("Could not read XML[" + xml + "]", e);
 79         }
 80         finally {
 81             in.close();
 82         }
 83 
 84         Element root = doc.getRootElement();
 85         List<Element> children = (List<Element>) root.elements();
 86         for (Element child : children) {
 87             put(child.getName(), child.getText());
 88         } 
 89         
 90      }catch(Exception e)
 91      {
 92          //System.out.print("错误"+e.getMessage()+":"+xml);
 93          e.printStackTrace();
 94      }
 95         
 96     }
 97 
 98     public String toXML() {
 99         Document doc = DocumentHelper.createDocument();
100         Element root = doc.addElement("object");
101         //root.addAttribute("class", XMLValueObject.class.getName());
102 
103         for (Map.Entry<String, List<String>> entry : map.entrySet()) {
104             String key = entry.getKey();
105             List<String> list = entry.getValue();
106 
107             for (String value : list) {
108                 Element child = root.addElement(key);
109                 child.addText(value);
110             }
111         }
112 
113         return doc.asXML();
114     }
115     
116     public Map<String, List<String>> getMap() {
117         return map;
118     }
119 
120     public void setMap(Map<String, List<String>> map) {
121         this.map = map;
122     }
123 }

测试代码:

1 public static void main(String[] args) {
2         XMLValueObject vo = new XMLValueObject();
3         vo.fromXML("<object><栏目>李树鹏</栏目><request_day>22</request_day><day>22</day><name>tttt</name></object>");
4         System.out.println(vo.get("栏目"));
5         vo.put("temp", "1212");
6         System.out.println(vo.toXML());
7     }

 

posted on 2016-05-15 01:32  ..小树苗  阅读(1117)  评论(0编辑  收藏  举报

导航