学习笔记——xml的入门及解析
需求:根据配置文件创建类,并调用方法
分析:1.XML 2.解析XML 3. 根据全限定名创建对象,调用方法
XML: 可扩展的标签语言
作用:存储数据。(主要用于配置文件)
后缀名.xml
书写规范 1. 区分大小写
2. 应该有一个根标签
3. 标签必须关闭
4.属性以引号引起来 <xx att = "value">
5.标签体中的空格或者换行或者制表符等内容都是作为数据内容存在
6.转义字符需要转义
xml的组成部分:
声明(必须顶格放在第一行 ):
<?xml version="1.0" encoding="UTF-8">
元素(标签): <xx><xx/>
属性: <xx 属性名="属性值"/>
注释:<!-- -->
CDATA: 保证数据原样输出
格式:<![CDATA[原样输出内容]]>
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5"> <servlet> <servlet-name>HelloMyServlet</servlet-name> <servlet-class>com.itheima.HelloMyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloMyServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
////////////////////////////////////////////////////////////////////
xml的解析:
解析方式: 1.sax 特点:逐行解析,只能查询 2.dom:特点:一次性将文档加载到内容中,形成一个dom树进行curd操作
解析技术 dom4j 常用的解析开发包
import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4jDemo { public static void main(String[] args) throws DocumentException{ //创建核心对象 SAXReader reader = new SAXReader(); Document doc = reader.read("C:\\Users\\zhoudongqi\\workspace\\day08\\xml\\web.xml"); Element root = doc.getRootElement(); List<Element> list = root.elements(); for(Element ele : list){ String text = ele.elementText("servlet-name"); System.out.println(text); } } }
Xpath: 1. 导包 2. api selectNote("表达式") ; selectSingleNote("表达式");
//////////////////////////////////////////
反射:
1. 获取对应的Class对象
Class c = Class.forName("全限定名");
Class c = 类名.class
Class c == 对象.getClass();
2. 通过Class对象创建实例
Object c.newInstance();
3.通过Class 对象获取方法
Method m = c.getMethod();
4.让方法执行
m.invoke(实例对象, 参数);
package demo1; public class HelloMyServlet { public double f(double a, double b){ System.out.println(a+b); return a+b; } }
package demo1; import java.lang.reflect.Method; public class Test1 { public static void main(String[] args) throws Exception { Class c = Class.forName("demo1.HelloMyServlet"); HelloMyServlet a = (HelloMyServlet) c.newInstance(); Method method = c.getMethod("f", double.class, double.class ); method.invoke(a, 3, 3); } }