学习笔记——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);
	}

}

  

原文地址:https://www.cnblogs.com/helloDuo/p/8261501.html