dom4j解析xml并放入缓存

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.springframework.stereotype.Component;

/**
 * CityDataTypeReader.java
 * @author 	 steveguoshao
 * @takeOver 	
 * @created   2013年10月23日 上午10:09:35
 * @version   1.0
 */
@Component("cityDataTypeReader")
public class CityDataTypeReader {

	private final String CITY_DATA_TYPE_FILE_LOCATION = "/META-INF/CityDataType.xml";
	
	private Map<String, Map<String, String>> CACHE = new HashMap<String, Map<String, String>>();
	
	@PostConstruct
	public void init() {
		CACHE.clear();
		readCityDataTypeFile();
	}
	
	/**
	 * 读取Xml配置文件并放入缓存
	 * readCityDataTypeFile 
	 * void
	 * @exception 
	 * @since  1.0.0
	 */
	@SuppressWarnings("unchecked")
	public void readCityDataTypeFile() {
		SAXReader reader = new SAXReader();
		InputStream inputStream = null;
		Document document = null;
		try {
			inputStream = this.getClass().getResourceAsStream(CITY_DATA_TYPE_FILE_LOCATION);
			document = reader.read(inputStream);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		Element root = document.getRootElement();
		List<Element> cityList = root.elements();
		Map<String, String> columnMap;
		for(Element city : cityList) {
			System.out.println("city.attributeValue(name):" + city.attributeValue("name"));
			List<Element> columnList = city.elements();
			columnMap = new HashMap<String, String>();
			for(Element column : columnList) {
				System.out.println("column.getName():" + column.getName() + " column.getData():" + column.getData());
				columnMap.put(column.getName(), column.getData().toString());
			}
			CACHE.put(city.attributeValue("name"), columnMap);
		}
	}
	
	@PreDestroy
	public void destory() {
		CACHE.clear();
		CACHE = null;
	}
	
	/**
	 * 根据城市code获取所有数据类型
	 * getColumnMap
	 * @param cityCode
	 * @return 
	 * Map<String,String>
	 * @exception 
	 * @since  1.0.0
	 */
	public Map<String, String> getColumnMap(String cityCode) {
		return CACHE.get(cityCode);
	}
	
}

xml
<?xml version="1.0" encoding="UTF-8"?>
<DATATYPE>
	<CITY name="cz">
		<STCODE>N</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jsco</FILENAMEPREFIX>
	</CITY>
	<CITY name="ha">
		<CODE>ha</CODE>
		<STCODE>N</STCODE>
		<STNAME>C</STNAME>
		<YYYY>N</YYYY>
		<MM>N</MM>
		<DD>N</DD>
		<HH>N</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jsha</FILENAMEPREFIX>
	</CITY>
	<CITY name="lyg">
		<CODE>lyg</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>C</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jsly</FILENAMEPREFIX>
	</CITY>
	<CITY name="nj">
		<CODE>nj</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>C</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jsnj</FILENAMEPREFIX>
	</CITY>
	<CITY name="nt">
		<CODE>nt</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jsnt</FILENAMEPREFIX>
	</CITY>
	<CITY name="sq">
		<CODE>sq</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jssq</FILENAMEPREFIX>
	</CITY>
	<CITY name="sz">
		<CODE>sz</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>C</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>C</SO2>
		<NO>C</NO>
		<NO2>C</NO2>
		<NOX>C</NOX>
		<PM10>C</PM10>
		<CO>C</CO>
		<O3>C</O3>
		<PM25>C</PM25>
		<FILENAMEPREFIX>jssu</FILENAMEPREFIX>
	</CITY>
	<CITY name="tz">
		<CODE>tz</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jstz</FILENAMEPREFIX>
	</CITY>
	<CITY name="wx">
		<CODE>wx</CODE>
		<STCODE>N</STCODE>
		<STNAME>C</STNAME>
		<YYYY>N</YYYY>
		<MM>N</MM>
		<DD>N</DD>
		<HH>N</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jswx</FILENAMEPREFIX>
	</CITY>
	<CITY name="xz">
		<CODE>xz</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>C</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>C</SO2>
		<NO>C</NO>
		<NO2>C</NO2>
		<NOX>C</NOX>
		<PM10>C</PM10>
		<CO>C</CO>
		<O3>C</O3>
		<PM25>C</PM25>
		<FILENAMEPREFIX>jsxz</FILENAMEPREFIX>
	</CITY>
	<CITY name="yc">
		<CODE>yc</CODE>
		<STCODE>N</STCODE>
		<STNAME>C</STNAME>
		<YYYY>N</YYYY>
		<MM>N</MM>
		<DD>N</DD>
		<HH>N</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>N</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jsyc</FILENAMEPREFIX>
	</CITY>
	<CITY name="yz">
		<CODE>yz</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>C</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>C</SO2>
		<NO>C</NO>
		<NO2>C</NO2>
		<NOX>C</NOX>
		<PM10>C</PM10>
		<CO>C</CO>
		<O3>C</O3>
		<PM25>C</PM25>
		<FILENAMEPREFIX>jsyz</FILENAMEPREFIX>
	</CITY>
	<CITY name="zj">
		<CODE>zj</CODE>
		<STCODE>C</STCODE>
		<STNAME>C</STNAME>
		<YYYY>C</YYYY>
		<MM>C</MM>
		<DD>C</DD>
		<HH>C</HH>
		<DWCODE>N</DWCODE>
		<DWNAME>C</DWNAME>
		<SO2>N</SO2>
		<NO>N</NO>
		<NO2>N</NO2>
		<NOX>N</NOX>
		<PM10>N</PM10>
		<CO>N</CO>
		<O3>N</O3>
		<PM25>N</PM25>
		<FILENAMEPREFIX>jszj</FILENAMEPREFIX>
	</CITY>
</DATATYPE>




   

你可能感兴趣的:(dom4j解析xml并放入缓存)