zoukankan      html  css  js  c++  java
  • XML,,DTD

    什么是XML

     XML个称为Extensible Markup Language,意思是可扩展的标记语言。XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。

        W3C19982月发布1.0版本,20042月义发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用。同时,在20042W3C又发布了1.0版本的第三版。我们要学习的还是1.0版本!!!

    1.2.1.2应用语法

    l XML文档声明

    1.文档声明必须为<?xml开头,以?>结束;

    2.文档声明必须从文档的0行0列位置开始:

    3.文档声明只有属性:

    a) versioin:指定XML文档版本。必须属性,因为我们不会选择1.1,只会选择1.0;

    b) encoding:指定当前文档的编码。可选属性,默认值是。utf-8:

    元素element

    1.元素是XML文档中最重要的组成部分,

    2.普通元素的结构开始标签、元素体、结束标签组成。例如:<hello>大家好</hello>

    3.元素体:元素体可以是元素,也可以是文本,例如:<b><a>你好</a ></b>

    4.空元素:空元素只有开始标签,而没有结束标签,但元素必须自己闭介,例如:<c/>

    5.元素命名:

    a) 区分大小写

    b) 不能使用空格,不能使用冒号:

    c) 不建议以XML,  xml,  Xml开头

    6.格式化良好的XML文档,必须只有一个根元素。

    l 属性

    1.属性是元素的一部分,它必须出现在元素的开始标签中

    2.属性的定义格式:属性名=属性值,其中属性值必须使用单引或双引

    3.一个元素可以有O ~ N个属性,但一个元素中不能出现同名属性

    4.属性名不能使用空格、冒号等特殊字符,且必须以字母开头

    l 注释

    XML的注释与HTML相同,即以“<!--”开始,以“-->”结束。注释内容会被XML解析器忽略!

    l 转义字符

    XML中的转义字符与HTML一样。

    因为很多符号己经被XML文档结构所使用,所以在元素体或属性值中想使用这些符号就必须使用转义字符,例如:"<"”>”、” ’ ”、” ” ”、”&”。

    l CDATA

    当大量的转义字符出现在xml文档中时,会使xml文档的可读性大幅度降低。这时如果使用CDATA段就会好一些。

    CDATA段中出现的“<”、“>’,、“””、“‘”、“&”,都无需使用转义字符。这可以提高xml文档的可读性。

       CDATA段中不能包含“]]>”,即CDATA段的结束定界符.

    1.2.2什么是DTD

      DTD (Document Type Definition ),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。

     DTD (Document Type Definition ),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。开发中,我们很少自己编写DTD约束文档,通常情况我们都是通过框架提供的DTD约束文档,编写对应的XML文档。常见框架使用DTD约束有:struts2,  hibernate等。

    XSD

     

    <?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>MyServlet</servlet-name>
                  <servlet-class>com.oracle.demo01.MyServlet</servlet-class>
                </servlet>
                <servlet-mapping>
                   <servlet-name>MyServlet</servlet-name>
                   <url-pattern>/MyServlet</url-pattern>
                </servlet-mapping>
                
    </web-app>

    XML DOM和HTML DOM类似,XML DOM将整个XML文档加载到内存,生成一个DOM树,

    并获得一个Document对象,通过Document对象就可以对DOM进行操作

    步骤:

    //1.创建解析器对象

    //2.使用解析器加载web.xml文件得到document对象

    //3.获取根元素节点

    //4.根据元素名称获取子元素节点

    //5.根据元素名称获取servlet-class的文本节点

    //6.通过类全名获取字节码文件

    //7.创建实例对象 

    //8.调用实例对象里面的方法

    public class Demo01 {
    public static void main(String[] args) throws DocumentException, InstantiationException, IllegalAccessException, ClassNotFoundException {
        //创建SAXReader对象
        SAXReader sax=new SAXReader();
        //加载xml文件,获取dom对象
        Document doc=sax.read("src/com/oracle/demo03/web.xml");
        //获取跟元素web-app
        Element root=doc.getRootElement();
        //获取Servlet元素
        Element servlet=root.element("servlet");
        //获取servlet-class元素
        Element servletClass=servlet.element("servlet-class");
        //huoqu servlet元素中文本节点,完整报名+类名
        String className=servletClass.getText();
        System.out.println(className);
        //获取字节码文件对象
        Class c=Class.forName(className);
        //快速创建对象
        HelloServlet hello=(HelloServlet)c.newInstance();
        hello.init();
        hello.service();
        hello.destroy();
    }
    }
    public class HelloServlet {
    public void init(){
        System.out.println("Servlet创建了");
    }
    public void service(){
        System.out.println("Servlet被访问了");
    }
    public void destroy(){
        System.out.println("Servlet被销毁了");
    }
    }
    <?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>HelloServlet</servlet-name>
                  <servlet-class>com.oracle.demo03.HelloServlet</servlet-class>
                </servlet>
                <servlet-mapping>
                   <servlet-name>HelloServlet</servlet-name>
                   <url-pattern>/HelloServlet</url-pattern>
                </servlet-mapping>
                
    </web-app>

     

  • 相关阅读:
    20155313 杨瀚 《网络对抗技术》实验九 Web安全基础
    20155313 杨瀚 《网络对抗技术》实验八 Web基础
    20155313 杨瀚 《网络对抗技术》实验七 网络欺诈防范
    20155313 杨瀚 《网络对抗技术》实验六 信息搜集与漏洞扫描
    20155313 杨瀚 《网络对抗技术》实验五 MSF基础应用
    20155313 杨瀚 《网络对抗技术》实验四 恶意代码分析
    20155313 杨瀚 《网络对抗技术》实验三 免杀原理与实践
    20155313 杨瀚 《网络对抗技术》实验二 后门原理与实践
    20155313 杨瀚 《网络对抗技术》实验一 PC平台逆向破解(5)M
    20155313 2017-2018-1 《信息安全系统设计基础》课程总结
  • 原文地址:https://www.cnblogs.com/marswenze/p/13494834.html
Copyright © 2011-2022 走看看