1.完成对xml解析,并通过反射机制实例化对象;主要用到的类有dom4j中的SAXReader SAXReader 类 //构造SAXReader SAXReader sr = new SAXReader(); //加载文件 Document doc = sr.read(File file) //Document对象代表XML文件在内存中的印象 //取得根元素 Element getRootElement() Element.getName() Element.elements() //取得该元素下的所有直接子元素 Element.elementText(“str”) //从一个元素导航到另一个元素,并取出该元素的文本** Element.element(“str”); //导航到另一个元素 Element.attributeValue(“str”); //取得该元素对应的属性**** ----------------------------------------------------------------------- xml
<beans> <bean id="student" class="xxx.xxx.Student"> </bean> </beans>Student类 public Student{ private String name; private String addr; Student(){ }; }
步骤: 1.解析xml文件,提取出id,class中的值 2.通过反射机制实例化class 3.以id作为key,实例对象作为value;存放入map中
写一个getBean()方法 getBean(String id){ return map(id); } public static void main(String[] args) throws Exception { 1.创建SAXReader对象 SAXReader sc=new SAXReader(); 2.读取配置文件 Document document=sc.read(new File("url")); 3.获得根元素 Element root=docment.getRootElement(); 4.取得该元素下的所有直接子元素 ArrayLIst<Element> elements=root.elements() ; String id=""; String class=""; Map map=new HashMap(); fore(Element e : elements){ //获取bean id id=e.attributeValue("id"); //获取bean class class=e.attributeValue("class"); //通过反射机制;实例化class = xxx.xxx.Student Class c=Class.forName(class); //实例化 //获取全限列名中的类名(Student),将全路径toString(),然后将其以 . 隔开;获得字符串数组;{“xxx”,"xxx","Student"} String [] s=class.toString().split('.'); //获得类名;字符数组的最后一个 String classT=s[s.lenght-1]; classT t=c.newInstance(); //放入map中 map.put("+id+","+t+"); } } 大概思路就是这样,存在很多不足,请谅解