1.將xml文件轉換成Document對象
2.通過xpath找到某個Element對象
3.通過屬性名找到對應的屬性值
4.通過該屬性值反射出一個對象
依賴的類庫:dom4j.jar及其依賴的xpath庫jaxen.jar.
package com.life.util; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class BeanFactory { public static Object getBean(String id){ try { SAXReader reader = new SAXReader(); Document document = reader.read(BeanFactory.class.getClassLoader().getResourceAsStream("beans.xml")); //下面這兩個獲取document的方式也可以 //Document document = reader.read(BeanFactory.class.getResourceAsStream("/beans.xml")); //Document document = reader.read(BeanFactory.class.getResourceAsStream("../../../beans.xml")); Element element = (Element)document.selectSingleNode("//bean[@id='"+id+"']"); String value = element.attributeValue("class"); Class<?> clz = Class.forName(value); return clz.newInstance(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(); } } }