`

如何读取自己手动添加的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;
              }


}

 

分享到:
评论

相关推荐

    python cookbook(第3版)

    6.4 增量式解析大型XML文件 6.5 将字典转换为XML 6.6 解析和修改XML 6.7 利用命名空间解析XML文档 6.8 与关系型数据库的交互 6.9 编码和解码十六进制数 6.10 编码解码Base64数据 6.11 读写二进制数组数据 ...

    Android开发资料合集--续

    55、获取Array.xml文件中的值 93 56、获取系统媒体声音文件 93 57、自定义Adapter 94 58、记住listview滚动位置 94 59、更改系统超时休眠的时间 94 60、更改对话框大小 95 61、json数据格式解析 95 62、两种Toast 97...

    rent_tracker:跟踪租户为出租房屋支付的租金的程序

    作为附带功能,该程序将租金支付添加到Google日历(其中的详细信息在一个类中设置-未来的计划包括将所有配置信息放入xml文件中),以便轻松地逐月浏览。 v1的未来功能包括: 算出到底多少房客欠款 跟踪租金上涨的...

    flex3的cookbook书籍完整版dpf(包含目录)

    加载一个XML文件 19.2节. 通过E4X语法遍历XML文档 19.3节. 使用正则表达式在E4X中进行查询 19.4节. 添加一个XMLList到XML对象 19.5节. 对一个XMLList或E4X查询进行绑定 19.6节. 从数组中生成XML对象 19.7节. 如何...

    asp.net知识库

    Asp.Net(C#)利用XPath解析XML文档示例 XSL .Net框架下的XSLT转换技术简介 一个XSLT的简单例子 XSLXSLT板主题整理 xsl入门的好文章 新手学习XSL的好东西 XSL语法介绍 XSL学习心得 - 调用属性值 XSLT与XML转换的详细...

    新版Android开发教程.rar

    也有分析认为,谷歌并不想做一个简单的手机终端制造商或者软件平台开发商,而意在一统传统互联网和 移 动互联网。----------------------------------- Android 编程基础 4 Android Android Android Android 手机新...

    《浩海网络多格式播放器》V3.9.4.1

    6,取消了XML作为语言封装的文件,此版全部改成了js文件封装来提高播放器效率!7,最新加入CSS.JS的设置文件,来方便设定播放器的一些样式表现上的系统设置,例如新的按钮切换采用的技术,如果要制作皮肤就需要改动...

    java 面试题 总结

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...

    Java EE常用框架.xmind

    当用户需要查询的时候,就使用IndexSearcher从索引库中读取数据,找到对应的Document对象,从而解析里边的内容 最后将内容封装到JavaBean对象中 索引库优化 合并文件 采用一种算法,将中英文本...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例242 读取远程文件中的数据 314 实例243 删除指定目录下的所有.ini文件 315 实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例242 读取远程文件中的数据 314 实例243 删除指定目录下的所有.ini文件 315 实例244 将文本文件中数据存储到数据库中 316 4.5 文件的压缩与解压 318 实例245 PHP中压缩RAR文件 319 实例246 PHP中将上传文件转换成...

    《浩海网络多格式播放器》V3.9.4.4

    6,取消了XML作为语言封装的文件,此版全部改成了js文件封装来提高播放器效率!7,最新加入CSS.JS的设置文件,来方便设定播放器的一些样式表现上的系统设置,例如新的按钮切换采用的技术,如果要制作皮肤就需要改动...

    《OceanX》播放器 Prv0.3

    6,取消了XML作为语言封装的文件,此版全部改成了js文件封装来提高播放器效率!7,最新加入CSS.JS的设置文件,来方便设定播放器的一些样式表现上的系统设置,例如新的按钮切换采用的技术,如果要制作皮肤就需要改动...

    《浩海网络多格式播放器》V3.9.4.5

    6,取消了XML作为语言封装的文件,此版全部改成了js文件封装来提高播放器效率!7,最新加入CSS.JS的设置文件,来方便设定播放器的一些样式表现上的系统设置,例如新的按钮切换采用的技术,如果要制作皮肤就需要改动...

    《OceanX》播放器 Prv0.33

    6,取消了XML作为语言封装的文件,此版全部改成了js文件封装来提高播放器效率!7,最新加入CSS.JS的设置文件,来方便设定播放器的一些样式表现上的系统设置,例如新的按钮切换采用的技术,如果要制作皮肤就需要改动...

Global site tag (gtag.js) - Google Analytics