XMLManager类(单例模式管理解析过程的类) package com; import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import java.io.File; import java.util.Map; public class XMLManager ... { private String xmlpath = new String("myxml.xml"); private File xmlfile = null; private long lastmodifiedtime = 0; private SAXHandler saxhandler = null; private SAXParserFactory saxparserfactory = null; private SAXParser saxparser = null; private Map<String, String> map = null; private static XMLManager xmlmanager = new XMLManager(); private XMLManager() ...{ xmlfile = new File(xmlpath); lastmodifiedtime = xmlfile.lastModified(); saxhandler = new SAXHandler(); try ...{ saxparserfactory = SAXParserFactory.newInstance(); saxparser = saxparserfactory.newSAXParser(); saxparser.parse(xmlfile, saxhandler); map = saxhandler.getMap(); } catch (Exception ex) ...{ ex.printStackTrace(); } } public static XMLManager newInstance() ...{ return xmlmanager; } synchronized public String getValue(String key) ...{ long newtime = xmlfile.lastModified(); if (newtime == 0) ...{ if (lastmodifiedtime == 0) ...{ System.out.println("file dose not exist!"); } else ...{ System.out.println("file was deleted!"); } return ""; } else if (newtime > lastmodifiedtime) ...{ try ...{ saxparser.parse(xmlfile, saxhandler); map = saxhandler.getMap(); } catch (Exception ex) ...{ ex.printStackTrace(); } } lastmodifiedtime = newtime; return map.get(key); }} test类(测试类) package com; import java.util.Map; import java.lang.reflect.Constructor; import java.util.HashMap; public class test ... { public static void main(String[] args) ...{ DataBaseContext dbc = new DataBaseContext(); DataBaseSuper dbs = null; Map map = new HashMap(); map.put("name", "丁丁"); map.put("age", "14"); String dboperate = XMLManager.newInstance().getValue("insert"); if (dboperate.equals("") || dboperate == null) ...{ System.out.println("operate failed!"); } else ...{ try ...{ /** *//** */ /** *//***具体的反射实现过程***/ Class cls = Class.forName(dboperate); Class partype = Class.forName("java.util.Map"); Constructor ct = cls.getConstructor(partype); dbs = (DataBaseSuper) ct.newInstance(map); } catch (Throwable ex) ...{ System.err.println(ex); } if (dbs != null) ...{ dbc.setOperate(dbs); dbc.excuteOperate(); } } }}