SAXReader的主要用法(XML)

java 代碼

package com.dc.framework.taglib;   
import java.io.FileInputStream;   
import java.io.FileNotFoundException;   
import java.util.HashMap;   
import java.util.Iterator;   
import java.util.List;   
import java.util.Map;   
import javax.servlet.ServletRequest;   
import javax.servlet.http.HttpServletRequest;   
import javax.servlet.jsp.JspTagException;   
import javax.servlet.jsp.tagext.TagSupport;   
import org.apache.commons.lang.StringUtils;   
import org.dom4j.Document;   
import org.dom4j.DocumentException;   
import org.dom4j.Element;   
import org.dom4j.io.SAXReader;   
    
  
//自定義標籤處理類   
public class ReadUploadFile {   
    // 配置文件的路徑   
    static String uploadCfgFile = "WEB-INF/conf/uploadfile.xml";    
    //文檔對象實體   
    Document uploadDocument = null;   
    //結果存儲體   
    Map uploadMap = new HashMap();   
       
 /**  
  * @param request  
  * @return  
  * 獲取配置文件絕對路徑  
  */  
 private String getuploadCfgFile(ServletRequest request) {   
      return ((HttpServletRequest) request).getSession().getServletContext().getRealPath(uploadCfgFile);   
 }   
    
 /**  
  * @param request  
  * @return  
  * 初始化配置文件  
  */  
 private Document inituploadCfgDocument(ServletRequest request) {   
      SAXReader saxReader = new SAXReader();   
      try {   
          //得到指定文件以流的形式對文件進行序列化   
          FileInputStream fis = new FileInputStream(getuploadCfgFile(request));   
          uploadDocument = saxReader.read(fis);   
      }   
      catch (DocumentException e) {   
          e.printStackTrace();   
      }   
      catch(FileNotFoundException fnfe){   
          fnfe.printStackTrace();   
      }   
      return uploadDocument;   
 }   
    
 /**  
  * 獲取配置文件  
  *  
  * @param request  
  * @return  
  */  
 private Document getuploadCfgDocument(ServletRequest request) {   
      if (this.uploadDocument == null) {   
          this.uploadDocument = inituploadCfgDocument(request);   
      }   
      return this.uploadDocument;   
 }   
  
 /**  
  * @param request  
  * @return  
  * 獲取某個指定preparents的配置屬性  
  */  
 public Map getuploadMap(ServletRequest request) {   
     //xml中的訪問路徑,說明欲處理XML文件的根元素是fileaction-configuration   
     String xPath = "//fileaction-configuration/preparents";   
     //獲取按照指定搜索路徑得到的元素列表,這裏指獲取所有的fileaction-configuration下的preparents元素   
     List result = getuploadCfgDocument(request).selectNodes(xPath);   
     //屬性和指定子元素的存儲體   
     Map uploadMap = new HashMap();   
     //遍歷所得元素   
     Iterator iter = result.iterator();   
     while (iter.hasNext()) {      
         //獲得具體的preparents元素   
         Element preparents = (Element) iter.next();   
         // 取得preparents元素的id屬性的值   
         String id2 = preparents.attributeValue("id");   
         // 取得preparents元素下子元素tabname的值,並與id2配對存儲   
         uploadMap.put(id2,   
            StringUtils.trim(preparents.elementText("tabname")));      
      }   
      return uploadMap;   
}   
}   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章