• JavaEE——XML


    什么是XML

    XML个称为Extensible Markup Language,意思是可扩展的标记语言。

    应用常见

    配置文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
     3 <web-app>
     4     <servlet>
     5         <servlet-name>HelloServlet</servlet-name>
     6         <servlet-class>com.oracle.HelloServlet</servlet-class>
     7     </servlet>
     8     <servlet-mapping>
     9         <servlet-name>HelloServlet</servlet-name>
    10         <url-pattern>/hello</url-pattern>
    11     </servlet-mapping>
    12     <welcome-file-list>
    13         <welcome-file>index.jsp</welcome-file>
    14     </welcome-file-list>
    15 </web-app>

    存放数据:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 -<person>
     4 
     5 
     6 -<person1>
     7 
     8 <name>张三</name>
     9 
    10 <age>18</age>
    11 
    12 </person1>
    13 
    14 <!--这是注释标签 -->
    15 
    16 
    17 
    18 -<person2>
    19 
    20 <name>张三</name>
    21 
    22 <age>>18</age>
    23 
    24 -<![CDATA[
    25             if(a>b&&a<b){
    26                 a=b;
    27             }
    28         ]]>
    29 </person2>
    30 
    31 </person>

    元素命名:

        区分大小写

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

        不建议以XML,  xml,  Xml开头

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

     

    什么是DTD

     DTD (Document Type Definition ),文档类型定义,用来约束XML文档

    规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!--
     3     模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。
     4     格式如下:
     5     <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
     6 -->
     7 <!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
     8 <!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
     9 <!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
    10 <!ELEMENT servlet-name (#PCDATA)>
    11 <!ELEMENT servlet-class (#PCDATA)>
    12 <!ELEMENT url-pattern (#PCDATA)>
    13 <!ELEMENT description (#PCDATA)>
    14 <!ELEMENT jsp-file (#PCDATA)>
    15 
    16 <!ELEMENT welcome-file-list (welcome-file+)>
    17 <!ELEMENT welcome-file (#PCDATA)>
    18 
    19 <!ATTLIST web-app version CDATA #IMPLIED>

     元素声明

    定义元素语法:<!ELEMENT元素名 元素描述>

        元素名:自定义

        元素描述包括 : 符号和数据类型

              常见符号: ?  *  +  ()  |  ,

              常见类型:#PCDATA表示内容是文本,不能是子标签

    符号

    符号类型

     

    描述

    示例

     

    ?

    问号

    表示该对象可以出现,但只能出现一次

    (菜鸟?)

     

    *

    星号

     

    表示该对象允许出现任意多次,也可以是零次

    (爱好*)

     

    +

    加号

     

    表示该对象最少出现一次,可以出现多次

    (成员+)

     

    ()

    括号

     

    用来给元素分组

    (古龙|金庸|梁羽生),

    (王朔|余杰),毛毛

     

     

    |

    竖条

     

    表明在列出的对象中选择一个

     

    (男人|女人)

     

    ,

    逗号

    表示对象必须按指定的顺序出现

    (西瓜,苹果,香蕉)

     

     

    实例:

     1 <!ELEMENT  web-app(servlet*,servlet-mapping*,welcome-file-list?)>
     2     web-app包括3个标签,且必须顺序出现。
     3         servlet子标签个数任意
     4         servlet-mapping子标签个数任意
     5         welcome-file-list子标签最多只能出现一次
     6 <!ELEMENT servlet(servlet-name,description?,(servlet-class|jsp-file))>
     7     servlet有3个子标签,且必须顺序出现
     8         servlet-name,必须有,且只能出现1次
     9         description,可选1次
    10         servlet-class和jsp-file二选一,且只能出现一次
    11 <!ELEMENT servlet-name(#PCDATA)>
    12     servlet-name的标签体必须是文本
    13 <!ELEMENT  welcome-file-list  (welcome-file+)>
    14       welcome-file-list至少有1个子标签welcome-file

    Schema约束

    什么是Schema

      Schema是新的XML文档约束:

      Schema要比DTD强大很多,是DTD替代者;

      Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml .

      Schema功能更强大,数据类型更完善

      Schema支持名称空间

    实例:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://www.example.org/web-app_2_5" 
     3             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4             xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd"
     5             version="2.5">
     6     <servlet>
     7         <servlet-name></servlet-name>
     8         <servlet-class></servlet-class>
     9     </servlet>
    10     <servlet-mapping>
    11         <servlet-name></servlet-name>
    12         <url-pattern></url-pattern>
    13     </servlet-mapping>
    14     <welcome-file-list>
    15         <welcome-file></welcome-file>
    16         <welcome-file></welcome-file>
    17     </welcome-file-list>
    18 </web-app>

    dom4j解析

     DOM解析原理及结构模型

    API使用

     1 public class Demo01 {
     2     public static void main(String[] args) throws Exception {
     3         //1.获取解析器
     4         SAXReader saxReader=new SAXReader();
     5         //2.获得document文档对象
     6         Document doc=saxReader.read("src/com/oracle/demo03/web.xml");
     7         //3.获取根元素
     8         Element rootElement=doc.getRootElement();
     9         //获取元素名称
    10         //System.out.println(rootElement.getName());
    11         //获取元素中的指定属性的属性值
    12         //System.out.println(rootElement.attributeValue("version"));
    13         //4.获取根元素下的所有子元素
    14         List<Element> childElements=rootElement.elements();
    15         //5.遍历子元素
    16         for(Element element:childElements){
    17         //6.判断元素名称为servlet的元素
    18             if("servlet".equals(element.getName())){
    19         //7.获取servlet-name元素
    20                 Element servletName=element.element("servlet-name");
    21         //8.获取servlet-class元素
    22                 Element servletClass=element.element("servlet-class");
    23                 System.out.println(servletName.getText());
    24                 System.out.println(servletClass.getText());
    25             }
    26         }
    27     }
    28 }

    案例实现:

    准备工作

    1 package com.oracle.demo03;
    2 
    3 public interface MyServlet {
    4     public void init();
    5     public void service();
    6     public void destory();
    7 }
     1 public class MyServletImp implements MyServlet{
     2 
     3     public void init() {
     4         System.out.println("初始化");
     5         
     6     }
     7     public void service() {
     8         System.out.println("工作");
     9         
    10     }
    11     public void destory() {
    12         System.out.println("死亡");
    13         
    14     }
    15 
    16 }
     1 public class Demo {
     2     public static void main(String[] args) throws Exception {
     3         //1.解析对象
     4         SAXReader saxReader=new SAXReader();
     5         //2.获取document对象
     6         Document doc=saxReader.read("src/com/oracle/demo03/web.xml");
     7         //3.获取根元素
     8         Element rootElement=doc.getRootElement();
     9         //4.获取根元素下的所有子元素
    10         List<Element> childElements=rootElement.elements();
    11         String className=null;
    12         for(Element element:childElements){
    13             if("servlet".equals(element.getName())){
    14                 className=element.element("servlet-class").getText();    
    15             }
    16         }
    17         //5.创建字节码对象
    18         Class c=Class.forName(className);
    19         MyServletImp myservlet=(MyServletImp)c.newInstance();
    20         myservlet.init();
    21         myservlet.service();
    22         myservlet.destory();
    23     }public class Demo {
    24     public static void main(String[] args) throws Exception {
    25         //1.解析对象
    26         SAXReader saxReader=new SAXReader();
    27         //2.获取document对象
    28         Document doc=saxReader.read("src/com/oracle/demo03/web.xml");
    29         //3.获取根元素
    30         Element rootElement=doc.getRootElement();
    31         //4.获取根元素下的所有子元素
    32         List<Element> childElements=rootElement.elements();
    33         String className=null;
    34         for(Element element:childElements){
    35             if("servlet".equals(element.getName())){
    36                 className=element.element("servlet-class").getText();    
    37             }
    38         }
    39         //5.创建字节码对象
    40         Class c=Class.forName(className);
    41         MyServletImp myservlet=(MyServletImp)c.newInstance();
    42         myservlet.init();
    43         myservlet.service();
    44         myservlet.destory();
    45     }
  • 相关阅读:
    css
    常见属性
    表单
    html的块
    常见标签(一)
    html5 文本内容
    整数的分解
    快速排序及其应用
    javascript之动画特效
    html标签积累
  • 原文地址:https://www.cnblogs.com/2734156755z/p/9593173.html
Copyright © 2020-2023  润新知