l
leonWong 2008-01-18 05:50 ----------------------------XML文件--------------------------------- <?xml version="1.0" encoding="UTF-8"?> <root> <test> <name>test</name> <class>other.TestClass</class> </test> <test> <name>test1</name> <class>other.TestClass1</class> </test> </root> ----------------------------XML文件--------------------------------- ----------------------------XML解析用类--------------------------- package javaappdemo; import java.util.Iterator; import org.dom4j.Element; import org.dom4j.Document; import org.dom4j.io.SAXReader; public class ReadXml { public static String getType(String name) { try { SAXReader xmlReader = new SAXReader(); Document doc = xmlReader.read("newXMLDocument.xml"); Element root = doc.getRootElement(); Iterator it = root.elementIterator(); while(it.hasNext()) { Element sub = (Element) it.next(); Iterator itsub = sub.elementIterator(); while (itsub.hasNext()) { Element sub2 = (Element) itsub.next(); if("name".equals(sub2.getName())){ if(!name.equals(sub2.getData())){ break; } } if("class".equals(sub2.getName())){ return sub2.getData().toString(); } } } } catch (Exception e) { return ""; } return ""; } } ----------------------------XML解析用类--------------------------- ----------------------------TESTCLASS-------------------------- package other; public class TestClass{ public static void start(){ System.out.println("TestClass started!"); } } ----------------------------TESTCLASS-------------------------- ----------------------------TESTCLASS1-------------------------- package other; public class TestClass{ public static void start(){ System.out.println("TestClass started!"); } } ----------------------------TESTCLASS1-------------------------- ----------------------------Main-------------------------- package javaappdemo; import java.lang.reflect.Method; public class Main { public static void main(String[] args) { try { String NodeName = "test1"; String ClassName = ReadXml.getType(NodeName); Class className = Class.forName(ClassName); Method method = className.getMethod("start", new Class[0]); method.invoke(null, new Object[0]); } catch (Exception ex) { System.out.println("反射失败: " + ex.getMessage()); } } } ----------------------------Main--------------------------