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+");
}
}
大概思路就是这样,存在很多不足,请谅解