java反射獲取xml元素
阿新 • • 發佈:2018-04-16
java反射獲取xml元素類名:
class Person { public void run(String who){ System.out.println("Person::run()" + who); } public void jump(String who){ System.out.println("Person::jump()" + who); } public void run(){ System.out.println("Person::run()"); } public void jump(){ System.out.println("Person::jump()"); } }
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <root> <class> <className>day2.mode1.Person</className> <methodName>jump</methodName> <argType>java.lang.String</argType> <argValue>李玟</argValue> </class> </root>
測試類:
import java.io.File; import java.lang.reflect.Method; import org.dom4j.Document; import org.dom4j.io.SAXReader; import org.junit.Test; //使用dom4j和反射技術 public class Demo1 { //解析xml文件 @Test public void fanse() throws Exception { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("src/day2/mode1/config.xml")); String className = document.selectSingleNode("//className").getText(); String methodName = document.selectSingleNode("//methodName").getText(); //System.out.println(className + ":" + methodName); //反射創建對象並執行方法 Class clazz = Class.forName(className); Method method = clazz.getMethod(methodName,null); method.invoke(clazz.newInstance(),null); } //解析xml文件 參數 @Test public void fanse2() throws Exception { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("src/day2/mode1/config.xml")); String className = document.selectSingleNode("//className").getText(); String methodName = document.selectSingleNode("//methodName").getText(); //System.out.println(className + ":" + methodName); //參數 String argType = document.selectSingleNode("//argType").getText(); String argValue = document.selectSingleNode("//argValue").getText(); //反射創建對象並執行方法 Class clazz = Class.forName(className); Method method = clazz.getMethod(methodName,Class.forName(argType)); method.invoke(clazz.newInstance(),argValue); } }
java反射獲取xml元素