Java开发笔记 — 反射、dom4j、xpath的综合小应用
来源:百度文库 编辑:神马文学网 时间:2024/04/19 18:42:53
设计目的:使用dom4j读出xml格式的配置文件,然后根据配置文件的信息,反射出一个已经编写好的类。
配置文件如下:
02
03
04
05
06
07
08
09
10
11
12
13
将要被反射的类:
Java语言: A.java1 package com.openwudi.excise.ReflectDom4j;2
3 public class A {
4 public void show(String s){
5 System.out.println(s);
6 }
7 }
主程序:使用了传统的dom4j和xpath两种不同的方式读取xml配置文件。
Java语言: ReflectFromXML.java01 package com.openwudi.excise.ReflectDom4j;02
03 import java.io.File;
04 import java.lang.reflect.Method;
05
06 import org.dom4j.Document;
07 import org.dom4j.Element;
08 import org.dom4j.io.SAXReader;
09
10 public class ReflectFromXML {
11 static String clazzName;
12 static String methodName;
13 static String methodPara;
14 static String methodParaValue;
15 /**
16 * @author WuDi
17 */
18 public static void main(String[] args) throws Exception {
19 SAXReader reader = new SAXReader();
20 Document doc = reader.read(new File("src/Properties.xml"));
21 //读取配置信息
22 //getClazz(doc);
23 getClazzByXpath(doc);
24 //反射出A类
25 reflectA();
26 }
27
28 //反射出A类
29 private static void reflectA() throws Exception {
30 Class clazzA = Class.forName(clazzName);
31 Method showMethod = clazzA.getMethod(methodName, Class.forName(methodPara));
32 showMethod.invoke(clazzA.newInstance(),methodParaValue);
33 }
34
35 //得到XML配置信息
36 private static void getClazz(Document doc) {
37 Element rootE = doc.getRootElement();
38 Element clazzE = rootE.element("class");
39 Element clazzNameE = clazzE.element("name");
40 clazzName = clazzNameE.getText();
41 Element methodE = clazzE.element("method");
42 Element methodNameE = methodE.element("name");
43 methodName = methodNameE.getText();
44 Element methodparameterE = methodE.element("parameter");
45 Element methodParaTypeE = methodparameterE.element("para-type");
46 Element methodParavValueE = methodparameterE.element("para-value");
47 methodPara = methodParaTypeE.getText();
48 methodParaValue = methodParavValueE.getText();
49 }
50
51 //用xpath得到XML配置信息
52 private static void getClazzByXpath(Document doc) {
53 Element clazzNameE = (Element) doc.selectSingleNode("/classes/class/name");
54 clazzName = clazzNameE.getText();
55 Element methodNameE = (Element) doc.selectSingleNode("/classes/class/method/name");
56 methodName = methodNameE.getText();
57 Element methodParaTypeE =(Element) doc.selectSingleNode("/classes/class/method/parameter/para-type");
58 Element methodParavValueE = (Element) doc.selectSingleNode("/classes/class/method/parameter/para-value");
59 methodPara = methodParaTypeE.getText();
60 methodParaValue = methodParavValueE.getText();
61 }
62
63 }
Java开发笔记 — 反射、dom4j、xpath的综合小应用
Java开发笔记 — dom4j 和 xpath
Java开发笔记 — HttpServletRequest方法总结
基于Java的Web应用开发规范
Java开发-基于JBoss的J2EE应用 — JAVA频道
java 的反射机制
基于WEB应用开发的java程序员必备工具
基于WEB应用开发的java程序员必备工具
dom4j学习笔记
【转】开发笔记:Java命名规范
初学者如何开发出一个高质量的J2EE系统(转载) - 企业应用 - Java - Java...
诺基亚平台上Java应用开发最新进展
诺基亚平台上Java应用开发最新进展
Java dom4j 解析xml文档
Java Reflection (JAVA反射)
大型Java分布式应用纵横谈 - Java 编程 - 编程开发 - 伊甸网
反射,java的灵魂 - 幽客独往 - CSDNBlog
基于WEB应用开发的java程序员必备工具 - 辛佳雨的专栏 - CSDNBlog
Google将限制Python语言的应用 开发社区热议 - Python编程 - Java...
关联词的综合应用
JProbe Suite-——提高开发效率,改善JAVA应用性能
嵌入式开发精英的必备素质 - 嵌入式综合交流区 - 电子设计应用论坛 - Powered ...
第6届全球GSM及Java卡应用开发大赛正式启动 — 资讯中心
XPATH