Dom4j工具类

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

  public class Dom4jUtil {
	  
    public final static Logger logger = LogManager.getLogger(Dom4jUtil.class);
    
    /**
     * String转Document
     * @param xml
     * @return
     */
    public static Document getDocument(String xml){
      Document document = null;
      try {
          SAXReader reader = new SAXReader();
          InputStream in = new ByteArrayInputStream(xml.getBytes("utf-8"));
          InputStreamReader strInStream = new InputStreamReader(in, "utf-8");
          document = reader.read(strInStream);
      } catch (Exception e) {
          logger.error("XML不合法! :", e);
      }
      return document;
     }
    
     /**
      * 递归解析
      * @param node
      * @param map
      */
	 public static void nodesToMap(Element node,Map<String,String> map) {  
	      if (!(node.getTextTrim().equals(""))) {  
	          map.put(node.getName(), node.getText());
	      }  
	      Iterator<Element> it = node.elementIterator();  
	      while (it.hasNext()){  
	          Element el = it.next();  
	          nodesToMap(el,map);  
	      }  
	  } 
	  
	  /**
	   * 无脑解析
	   * @param xml
	   * @return
	   */
	  public static Map<String,String> getMap(String xml){
		  Document document  =Dom4jUtil.getDocument(xml);
		  Element node = document.getRootElement();  
		  Map<String,String> map = new HashMap<String,String>();
		  nodesToMap(node,map);  
		  return map;
	  }
     
	  /**
	   * 解析多个相同兄弟节点
	   * @param elements
	   * @return
	   */
	  public static List<Map<String,String>> nodeToList(Element elements ){
		  List<Map<String,String>> list = new ArrayList<Map<String,String>>();
		  List<Element> childElements = elements.elements();
		  for (Element element : childElements) {
			  Map<String,String> map = new HashMap<String,String>();
			  nodesToMap(element , map);
			  map.put(element.getName(), element.getText());
			  list.add(map);
		  }
		  return list;
	  }
      
	  /**
	   * 解析角色参数
	   * @param xml
	   * @return
	   */
	  public static List<Map<String,String>> parseRoles(String xml){
		  Document document  =Dom4jUtil.getDocument(xml);
		  Element root = document.getRootElement();  
		  Element rolesElement = root.element("Value").element("Roles");  
		  return nodeToList(rolesElement);
	  }
 
}


你可能感兴趣的:(Dom4j工具类)