XML二反射

xiaoxiao2025-11-17  7

案例一:编写配置文件,编写一个服务器,按照指定的权限名,根据路径,让服务器创建这个对象,调用指定的方法 /// 反射: 1.获取对应的class 对象 方式1:Class clazz = Class.forName(“类的全限定名”) 方式2:Class clazz = 类名.class; 方式3:Class clazz = 对象.getClass(); 2.通过Class 对象创建一个类的实例(相当于 new 一个对象) Object obj = clazz.newInstance(); //调用空参构造函数创建对象 3.通过Class 对象获取方法的对象 Method method = clazz.getMethod(“方法名”,参数的类型.Class…) 4.执行方法 method.invoke(类的对象,传入方法的实参) // 代码实现:案例一:

package web_xml_tomcat; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; import web_xml_tomcat.dom4j.HelloMyServlet; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; /* 案例一:解析xml 文件,使服务器创建对应的类,调用对应的方法 */ public class Example1 { @Test public void function1() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException { //创建一个map Map<String,String> map = new HashMap<String,String>(); //在map 中存储 key: /hello value: web_xml_tomcat.dom4j.HelloMyServlet map.put("/hello","web_xml_tomcat.dom4j.HelloMyServlet"); //通过key 获取 value String value = map.get("/hello"); //通过全限定名获取Class 对象 Class clazz = Class.forName(value); HelloMyServlet hello = (HelloMyServlet) clazz.newInstance(); Method method = clazz.getMethod("add",int.class); method.invoke(hello,5); } /**通过解析 xml 文件创建对象调用方法 * @param */ @Test public void function2() throws Exception { //解析xml //创建document 对象 Document doc = new SAXReader().read("src\\web_xml_tomcat\\web_.xml"); //通过xpath 解析xml 文件 获取 servlet-class 和 url-pattern 的标签体 Element servletClass =(Element) doc.selectSingleNode("//servlet-class"); Element urlPattern = (Element) doc.selectSingleNode("//url-pattern"); String classText = servletClass.getText(); String urlText = urlPattern.getText(); System.out.println(classText+" "+urlText); //将获取的值存入map 集合 //Map<String,String> map = new HashMap<>(); // map.put(classText,urlText); } }

// xml约束: 规定xml 文件中只能出现那些元素,那些属性,以及他们出现的顺序 分类: DTD 约束: structs hiebernate **SCHEMA 约束 :**tomcat Spring 等 /// DTD约束: 和xml 关联的方式 方式一:内部关联 方式二:外部关联 – 系统关联

dtd 的语法作为了解 注意:一个xml 文件中只能有一个DTD约束 xml 的学习目标:能编写简单但xml 文件。能根据约束编写xml 文件(按f2 或者是 Alt+/ 就会出现提示)

// ** SCHEMA约束 ** 一个xml 中可以添加多个 schema 约束 xml 和schame 的关联: 格式: <根标签 xmlns = “…”…> xmlns 名称空间的作用: 1.关联约束文件 2.规定元素来源于哪一个约束文件 例如: 一个约束文件中规定 Table(表格) 表格有属性 row 和 col 一个约束文件中规定 Table(桌子) 有属性 width 和height 在同一个xml文件中将这两个约束文件都导入了。问:在xml 文件中的Table 有哪些属性? 为了避免这种情况。我们会给约束起别名,使用的时候没有加别名,就代表使用没有别名的哪一个 <根标签 xmlns :别名 = “…”…> schame 本身也是一个xml 文件

转载请注明原文地址: https://www.6miu.com/read-5039810.html

最新回复(0)