XML学习总结——SAXReader解析xml文件,实现反射 代码实例

简介: XML学习总结——SAXReader解析xml文件,实现反射 代码实例

XML文件


<?xml version="1.0" encoding="UTF-8" ?> 
- <web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" version="2.5">
- <servlet>
  <servlet-name>MyServlet1</servlet-name> 
  <servlet-class>cn.itheima.web.servlet1.MyServlet1</servlet-class> 
  </servlet>
- <servlet-mapping>
  <servlet-name>MyServlet1</servlet-name> 
  <url-pattern>/myServlet1</url-pattern> 
  </servlet-mapping>
- <servlet>
  <servlet-name>MyServlet2</servlet-name> 
  <servlet-class>cn.itheima.web.servlet1.MyServlet2</servlet-class> 
  </servlet>
- <servlet-mapping>
  <servlet-name>MyServlet2</servlet-name> 
  <url-pattern>/myServlet2</url-pattern> 
  </servlet-mapping>
  </web-app>


接口


public interface IMyServlet {
  public void init();
  public void service();
  public void destory();
}


接口的一个实现类Myservlet1


public class MyServlet1 implements IMyServlet{
  @Override
  public void init() {
    System.out.println("MyServlet1诞生了……");
  }
  @Override
  public void service() {
    System.out.println("MyServlet1开始服务了……");
  }
  @Override
  public void destory() {
    System.out.println("MyServlet1销毁了……");
  }
}


接口的另一个实现类Myservlet2


public class MyServlet2 implements IMyServlet{
  @Override
  public void init() {
    System.out.println("MyServlet2诞生了……");
  }
  @Override
  public void service() {
    System.out.println("MyServlet2开始服务了……");
  }
  @Override
  public void destory() {
    System.out.println("MyServlet2销毁了……");
  }
}


Junit测试类


@Test
  public void testMyServlet(){
    try {
      //1.创建解析器对象
      SAXReader saxReader = new SAXReader();
      //2.使用解析器加载web.xml文件得到document对象
      Document document = saxReader.read("src/cn/itheima/web/servlet1/web.xml");
      //3.获取根元素节点
      Element rootElement = document.getRootElement();
      //4.根据元素名称获取子元素节点
      Element servletElement = rootElement.element("servlet");
      //5.根据元素名称获取servlet-class的文本节点
      String servletClass = servletElement.element("servlet-class").getText();
      //System.out.println(servletClass);
      //6.通过类全名获取字节码文件
      Class clazz = Class.forName(servletClass);
      //7.创建实例对象
      MyServlet1 my = (MyServlet1) clazz.newInstance();
      //8.调用实例对象里面的方法
      my.init();
      my.service();
      my.destory();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
目录
相关文章
|
6月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
1560 1
|
6月前
|
存储 缓存 负载均衡
阿里云服务器实例选择指南:热门实例性能、适用场景解析对比参考
2025年,在阿里云的活动中,主售的云服务器实例规格除了轻量应用服务器之外,还有经济型e、通用算力型u1、计算型c8i、通用型g8i、计算型c7、计算型c8y、通用型g7、通用型g8y、内存型r7、内存型r8y等,以满足不同用户的需求。然而,面对众多实例规格,用户往往感到困惑,不知道如何选择。本文旨在全面解析阿里云服务器实例的各种类型,包括经济型、通用算力型、计算型、通用型和内存型等,以供参考和选择。
|
6月前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
|
6月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
173 15
|
6月前
|
存储 机器学习/深度学习 人工智能
阿里云服务器第八代通用型g8i实例评测:性能与适用场景解析
阿里云服务器通用型g8i实例怎么样?g8i实例采用CIPU+飞天技术架构,并搭载最新的Intel 第五代至强可扩展处理器(代号EMR),不仅性能得到大幅提升,同时还拥有AMX加持的AI能力增强,以及全球范围内率先支持的TDX机密虚拟机能力。这些特性使得g8i实例在AI增强和全面安全防护两大方面表现出色,尤其适用于在线音视频及AI相关应用。本文将深入探讨g8i实例的产品特性、优势、适用场景及规格族,以帮助您更好地了解这款产品,以供参考和选择。
|
8月前
|
存储 运维 资源调度
阿里云服务器经济型e实例解析:性能、稳定性与兼顾成本
阿里云经济型e云服务器以其高性价比、稳定可靠的性能以及灵活多样的配置选项,成为了众多企业在搭建官网时的首选。那么,阿里云经济型e云服务器究竟怎么样?它是否能够满足企业官网的搭建需求?本文将从性能表现、稳定性与可靠性、成本考虑等多个方面对阿里云经济型e云服务器进行深入剖析,以供大家参考选择。
528 37
|
8月前
|
存储 Java 计算机视觉
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
235 15
|
10月前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
369 57
|
9月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
888 5
|
9月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
741 5

推荐镜像

更多
  • DNS