• 笔记-JavaWeb学习之旅9


    XML

    Extensible Markup Language 可扩展标记语言

    功能:配置文件,在网络中传输

    基本语法
    1.xml文档的后缀名.xml
    2.xml第一行必须定义为文档声明
    3.xml文档中有且仅有一个跟标签
    4.属性值使用引号引起来
    5.标签必须正确关闭
    6.xml标签名称区分大小写
    
    <?xml version='1.0' ?>
    
    <users>
    	<user id='1'>
    		<name>张三</name>
    		<age>23</age>
    		<gender>male</gender>
    	</user>
    	
    	<user id='2'>
    		<name>李四</name>
    		<age>24</age>
    		<gender>female</gender>
    		<code>
    		<!--CDATA区的code会原样展示-->
    			<![CDATA[if(a<b&&a>c){}]]>
    		</code>
    	</user>
    </users>
    
    约束 :规定xml文档的书写规则
    dtd约束:

    dtd约束

    img

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE students SYSTEM "student.dtd">
    
    <students>
        <student number="s001">
            <name>张三</name>
            <age>23</age>
            <sex>男</sex>
        </student>
    
        <student number="s002">
            <name>李四</name>
            <age>24</age>
            <sex>女</sex>
        </student>
    </students>
    
    引入schema文档

    img

    img

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- 
    	1.填写xml文档的根元素
    	2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
    	4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml" 
    	
    	
     -->
     <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     			 xmlns="http://www.itcast.cn/xml" 
     		   xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
     		    >
     	<student number="heima_0001">
     		<name>tom</name>
     		<age>18</age>
     		<sex>male</sex>
     	</student>
    		 
     </students>
    
    <?xml version="1.0"?>
    <xsd:schema xmlns="http://www.itcast.cn/xml"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified">
        <xsd:element name="students" type="studentsType"/>
        <xsd:complexType name="studentsType">
            <xsd:sequence>
                <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
        <xsd:complexType name="studentType">
            <xsd:sequence>
                <xsd:element name="name" type="xsd:string"/>
                <xsd:element name="age" type="ageType" />
                <xsd:element name="sex" type="sexType" />
            </xsd:sequence>
            <xsd:attribute name="number" type="numberType" use="required"/>
        </xsd:complexType>
        <xsd:simpleType name="sexType">
            <xsd:restriction base="xsd:string">
                <xsd:enumeration value="male"/>
                <xsd:enumeration value="female"/>
            </xsd:restriction>
        </xsd:simpleType>
        <xsd:simpleType name="ageType">
            <xsd:restriction base="xsd:integer">
                <xsd:minInclusive value="0"/>
                <xsd:maxInclusive value="256"/>
            </xsd:restriction>
        </xsd:simpleType>
        <xsd:simpleType name="numberType">
            <xsd:restriction base="xsd:string">
                <xsd:pattern value="heima_d{4}"/>
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:schema> 
    
    
    xml_解析

    操作xml文档,将文档中的数据读取到内存中

    解析方式:

    1.DOM:将标记语言文档一次性加载进内存,在内存中形成一个dom数

    2.SAX:逐行读取,基于事件驱动的

    常见解析器:

    1.JAXP 2.DOM4J 3.Jsoup。

    Jsoup使用步骤

    1.导入jar包

    2.获取Document对象

    3.获取对应的标签

    4.获取数据

    <?xml version="1.0" encoding="UTF-8" ?>
    <students>
        <student number="s001">
            <name id="a">张三</name>
            <age>23</age>
            <sex>男</sex>
        </student>
    
        <student number="s002">
            <name>李四</name>
            <age>24</age>
            <sex>女</sex>
        </student>
    </students>
    
    package data;
    
    import org.jsoup.Jsoup;
    
    import  org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    import java.io.File;
    import java.net.URL;
    
    public class jsoupDemo1 {
        public static void main(String[] args) {
            //获取student.xml的path
            //可以使用字节码对象来获取类加载器
            Class ac1ass = jsoupDemo1.class;
            ClassLoader aclassLoader=ac1ass.getClassLoader();
            //获取资源位置
            URL aurl=aclassLoader.getResource("student.xml");
            //获取字符串表示形式的路径
            String path = aurl.getPath();
            //解析xml文档,加载文档进内存,获取dom树
            //parse方法需要一个File对象和字符集作为参数
            //parde返回的是一个Document对象
            try {
              Document aDocument=Jsoup.parse(new File(path),"utf-8");
              //获取元素对象
                Elements aElement=aDocument.getElementsByTag("name");
                System.out.println(aElement.size());
                Element element=aElement.get(0);
                System.out.println(element);
                System.out.println("----------------");
                //通过标签属性名来获取元素
                Elements aElements1 = aDocument.getElementsByAttribute("id");
                System.out.println(aElements1);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    
    

    快捷查询方式:

    1.selector,选择器

    2.xpath;

    选择器的演示

    package data;
    
    import org.jsoup.Jsoup;
    
    import  org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    import java.io.File;
    import java.net.URL;
    
    public class jsoupDemo1 {
        public static void main(String[] args) {
            //获取student.xml的path
            //可以使用字节码对象来获取类加载器
            Class ac1ass = jsoupDemo1.class;
            ClassLoader aclassLoader=ac1ass.getClassLoader();
            //获取资源位置
            URL aurl=aclassLoader.getResource("student.xml");
            //获取字符串表示形式的路径
            String path = aurl.getPath();
            //解析xml文档,加载文档进内存,获取dom树
            //parse方法需要一个File对象和字符集作为参数
            //parde返回的是一个Document对象
            try {
              Document aDocument=Jsoup.parse(new File(path),"utf-8");
                //查询name标签
                Elements elements = aDocument.select("name");
                System.out.println(elements+"通过标签查找");
                System.out.println("=====================================");
                //查询属性id值为a
                Elements elements1 =aDocument.select("#a");
                System.out.println(elements1+"通过属性值a查找");
                System.out.println("=========================================");
                //获取student标签下的属性值为s002下的age
               Elements elements2 = aDocument.select("student[number=s002]>age");
                System.out.println(elements2);
                System.out.println("===========================================");
                //只要纯文本
                String s1 = elements2.text();
                System.out.println(s1);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    
    

    XPath的演示(需要额外导入jar包)

    package data;
    
    
    import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException;
    import cn.wanghaomiao.xpath.model.JXDocument;
    import cn.wanghaomiao.xpath.model.JXNode;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    
    
    public class jsoupDemo4 {
        public static void main(String[] args) throws IOException {
            String path = jsoupDemo4.class.getClassLoader().getResource("student.xml").getPath();
            Document document = Jsoup.parse(new File(path) ,"utf-8");
            //创建JXDocument对象
            JXDocument jxDocument = new JXDocument(document);
            //结合XPath语法查询
            //查询所有student标签
            try {
                List<JXNode> jxNodes = jxDocument.selN("//student");
                for(JXNode jxNode:jxNodes){
                    System.out.println(jxNode);
                }
                System.out.println("===========================");
                //查询student标签下带有属性的name标签
                List<JXNode> jxNodes1 = jxDocument.selN("//student/name[@id]");
                for(JXNode jxNode:jxNodes1){
                    System.out.println(jxNode);
                }
            } catch (XpathSyntaxErrorException e) {
    
                e.printStackTrace();
            }
        }
    }
    
    
    tomcat

    web服务器软件

    img

    配置

    部署项目的方式

    第一种方式.直接将项目放在webapps目录下

    第二种方式:配置conf/server.xml文件,在标签中配置

    第三种方式:在confcatalinalocalhost创建任意名称的xml文件,在文件中编写虚拟的目录

    第三种部署项目方式演示

    img

    img

    img

  • 相关阅读:
    net5 webapi中 SwaggerUI如何进行版本控制
    动态菜单/权限管理的实现效果(数据前提:须做好 菜单、按钮、角色、用户等相关功能)
    MOS管的引脚,G、S、D分别代表什么?
    关系再好,也不要跟人透露这三个隐私。
    Linux 学习笔记
    算法 蓄水问题
    算法 等概率问题
    算法 字符串类问题(一)
    效率,生产力和用户友好的应用程序是GeneXus为Salinas集团带来的一些好处
    Multillantas Nieto通过智能设备和GeneXus将生产率提高了50%
  • 原文地址:https://www.cnblogs.com/train99999/p/10989668.html
Copyright © 2020-2023  润新知