Java读取WEB-INF下XML文件并进行解析

项目需要从配置文件中读取更新索引的的地址,故写了一个方法进行操作:读取并解析文件以初始化地址列表,该方法需传递一个javax.servlet.ServletContext参数,用于获得文件路径,因为我是在一个实现了javax.servlet.ServletContextListener 的类中调用的,所以在contextInitialized方法中通过event.getServletContext() 可以很方便得到该参数,下面是该方法代码:

	/**
	 * 初始化多服务器更新索引的接口列表
	 * 该方法服务器启动时在UpdateIndexListener中被调用
	 * */
	public static void initServersList(ServletContext event) {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder db = dbf.newDocumentBuilder();
			Document doc = db.parse(new FileInputStream(event.getRealPath("WEB-INF/kbs-UpdateIndex-AllServers.xml")));
			// Element root = doc.getDocumentElement();
			NodeList serverslist = doc.getElementsByTagName("server");
			if (serverslist != null) {
				for (int i = 0; i < serverslist.getLength(); i++) {
					String updateIndexUrl = doc
							.getElementsByTagName("update-index-url").item(i)
							.getFirstChild().getNodeValue();
					serverList.add(updateIndexUrl);
				}
			}
		} catch (Exception e) {
			log.error(e.getMessage());
		}
	}

我的配置kbs-UpdateIndex-AllServers.xml 文件放在WEB-INF下:

<?xml version="1.0" encoding="UTF-8"?>

<!-- ======================================================================= -->
<!-- kbs服务器信息配置文件 -->
<!-- @author linshutao -->
<!-- server: 代表一个服务器 -->
<!-- update-index-url: kbs更新索引的接口-->
<!-- ======================================================================= -->

<kbs-servers>
	<server>
		<update-index-url>http://localhost:8080/IM800KBS/api/UpdateIndex/updateIndex.do</update-index-url>
	</server>
</kbs-servers>


你可能感兴趣的:(java,exception,xml,server,服务器,encoding)