如何读取自己手动添加的xml文件,并解析【详细】

1.在web.xml文件中配置如下段代码,其中StatisticsFile.xml文件是自定义的xml文件

  <context-param>
         <param-name>statisticsConfig</param-name>
         <param-value>/StatisticsFile.xml</param-value>
 </context-param>

 

2.在web.xml文件中对监听器的配置如下:

 <listener>
       <description>loading app.properties</description>
       <listener-class>com.cfets.imix.util.SysListener</listener-class>
 </listener>

 

3.Sytlistener.java类,主要作用是获取xml文件

 

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;
public class SysListener extends HttpServlet implements ServletContextListener {
          public void contextDestroyed(ServletContextEvent arg0) {}
          

           public void contextInitialized(ServletContextEvent sce) {
                  ServletContext sc = sce.getServletContext();
                  String appName = sc.getContextPath().replace("/", "");//获得应用名称
                  sc.log("[imix] get app config files");
       

                   //获取配置文件名,statisticsConfig是在web.xml文件配置过的
                   String statisticsFileName = sc.getInitParameter("statisticsConfig");  
                   StatisticsConfig.initKeyValue(statisticsFileName, appName);//解析xml文件
       }

}

 

 

4.StatisticsConfig.java类,主要作用是:解析xml文件,把解析后的数据放入到map集合中,方便再其它类中调用

import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import com.cfets.imix.pojo.StatisticsData;

public class StatisticsConfig {
            private static Map<String,String> maps = new HashMap<String,String>();
             private static String applicationName = "";
             public static Map<String, String> getMaps() {
                     return maps;
              }


   
         public static void initKeyValue(String appConfigName,String appName){
                     pplicationName = (appName == null?"":appName);
                     if(applicationName == null || appConfigName.trim().length() == 0){
                             printLog("未能获得启动配置文件名称,应用将停止");
                              System.exit(0);
                     }
                   try{
                           printLog("加载启动配置文件:"+appConfigName);
                           InputStream is = StatisticsConfig.class.getResourceAsStream(appConfigName);
                           if(is == null) throw new Exception("app启动配置路径错误!");
                          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                          DocumentBuilder builder = factory.newDocumentBuilder();
                          Document doc = builder.parse(is);   

                          Element root = doc.getDocumentElement();
                          NodeList nodeList = root.getElementsByTagName("item");
                          for(int i=0;i<nodeList.getLength();i++){
                                   StatisticsData sd = new StatisticsData();
                                   String name =

                                              doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue();
                                   String url = doc.getElementsByTagName("url").item(i).getFirstChild().getNodeValue();
                                    maps.put(url, name);
                        }
                 }catch(Exception e){

                       printLog("初始化启动配置文件StatisticsFile.xml文件有误!");

                       e.printStackTrace();
                       System.exit(0);
                  }
         }
   
  
                     public static void printLog(String msg){
                               System.out.println("[" + applicationName + "] " + getTimeString()
                                  + " - " + StatisticsConfig.class.toString() + " - " + msg);
                         }

 

                public static String getTimeString(){
                                String timeString = null;
                                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
                                timeString = sdf.format(new Date(System.currentTimeMillis()));
                                return timeString;
                  }

 

             public static void setMaps(Map<String, String> maps) {
                    StatisticsConfig.maps = maps;
             }

             public static String getApplicationName() {
                       return applicationName;
             }
             public static void setApplicationName(String applicationName) {
                   StatisticsConfig.applicationName = applicationName;
              }


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值