XML (可扩展标记语言)

news/2024/5/21 3:01:25

目录

一、概念

二. 使用:

   1. 基本语法:

    2. 组成部分:

        (1)文档声明

        (2) 指令(了解):结合css

        (3) 标签:标签名称自定义

        (4)属性

         (5) 文本

3. 约束:规定xml文档的书写规则

4. 解析:操作xml文档,将文档中的数据读取到内存中

5. 对象的使用:

6. 快捷查询方式:


一、概念

          Extensible Markup Language 可扩展标记语言

    * 可扩展:标签都是自定义的。 <user>  <student>

    * 功能
        * 存储数据
            1. 配置文件
            2. 在网络中传输


 * xml与html的区别
        1. xml标签都是自定义的,html标签是预定义。
        2. xml的语法严格,html语法松散
        3. xml是存储数据的,html是展示数据

    * w3c:万维网联盟

二. 使用:

   1. 基本语法:

        1. xml文档的后缀名 .xml2. xml第一行必须定义为文档声明3. xml文档中有且仅有一个根标签4. 属性值必须使用引号(单双都可)引起来5. 标签必须正确关闭6. xml标签名称区分大小写

    * 快速入门:

   <?xml version='1.0' ?><users><user id='1'><name>zhangsan</name><age>23</age><gender>male</gender><br/></user><user id='2'><name>lisi</name><age>24</age><gender>female</gender></user></users>

     
    2. 组成部分:

        (1)文档声明

               格式:<?xml 属性列表 ?>
               属性列表:    

 * version:版本号,必须的属性* encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1* standalone:是否独立* 取值:* yes:不依赖其他文件* no:依赖其他文件


        (2) 指令(了解):结合css

  * <?xml-stylesheet type="text/css" href="a.css" ?>


       (3) 标签:标签名称自定义

            * 规则:* 名称可以包含字母、数字以及其他的字符 * 名称不能以数字或者标点符号开始 * 名称不能以字母 xml(或者 XML、Xml 等等)开始 * 名称不能包含空格 

      (4)属性:

            id属性值唯一

       (5) 文本:

  * CDATA区:在该区域中的数据会被原样展示* 格式:  <![CDATA[ 数据 ]]>

3. 约束:规定xml文档的书写规则

        * 作为框架的使用者(程序员):
            (1)能够在xml中引入约束文档
            (2)能够简单的读懂约束文档
        
        * 分类:
            (1)DTD:一种简单的约束技术
            (2) Schema:一种复杂的约束技术

            * DTD:* 引入dtd文档到xml文档中* 内部dtd:将约束规则定义在xml文档中* 外部dtd:将约束的规则定义在外部的dtd文件中* 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">* 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">
* Schema:* 引入: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">

4. 解析:操作xml文档,将文档中的数据读取到内存中

    * 操作xml文档
        (1)解析(读取):将文档中的数据读取到内存中
        (2)写入:将内存中的数据保存到xml文档中。持久化的存储

    * 解析xml的方式:
       (1) DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
            * 优点:操作方便,可以对文档进行CRUD的所有操作
            * 缺点:占内存
       (2)SAX:逐行读取,基于事件驱动的。
            * 优点:不占内存。
            * 缺点:只能读取,不能增删改

   * xml常见的解析器:
        (1)JAXP:sun公司提供的解析器,支持dom和sax两种思想
        (2)DOM4J:一款非常优秀的解析器
        (3)Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
        (4)PULL:Android操作系统内置的解析器,sax方式的。

* Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。
它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。* 快速入门:* 步骤:1. 导入jar包2. 获取Document对象3. 获取对应的标签Element对象4. 获取数据
 //获取student.xml的pathString path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();//2.2解析xml文档,加载文档进内存,获取dom树--->DocumentDocument document = Jsoup.parse(new File(path), "utf-8");//3.获取元素对象 ElementElements elements = document.getElementsByTag("name");System.out.println(elements.size());//3.1获取第一个name的Element对象Element element = elements.get(0);//3.2获取数据String name = element.text();System.out.println(name);

5. 对象的使用:

        (1) Jsoup:工具类,可以解析html或xml文档,返回Document  

  * parse:解析html或xml文档,返回Document* parse​(File in, String charsetName):解析xml或html文件的。* parse​(String html):解析xml或html字符串* parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象


        (2)Document:文档对象。代表内存中的dom树
        (3)Elements:元素Element对象的集合。可以当做 ArrayList<Element>来使用
        (4) Element:元素对象

 1. 获取子元素对象* getElementById​(String id):根据id属性值获取唯一的element对象* getElementsByTag​(String tagName):根据标签名称获取元素对象集合* getElementsByAttribute​(String key):根据属性名称获取元素对象集合* getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合2. 获取属性值* String attr(String key):根据属性名称获取属性值3. 获取文本内容* String text():获取文本内容* String html():获取标签体的所有内容(包括字标签的字符串内容)


        (5) Node:节点对象
            * 是Document和Element的父类

6. 快捷查询方式:

        (1)selector:选择器
            * 使用的方法:Elements    select​(String cssQuery)
                * 语法:参考Selector类中定义的语法
        (2)XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
            * 使用Jsoup的Xpath需要额外导入jar包。
            * 查询w3cshool参考手册,使用xpath的语法完成查询
            * 代码:
              

                //1.获取student.xml的pathString path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();//2.获取Document对象Document document = Jsoup.parse(new File(path), "utf-8");//3.根据document对象,创建JXDocument对象JXDocument jxDocument = new JXDocument(document);//4.结合xpath语法查询//4.1查询所有student标签List<JXNode> jxNodes = jxDocument.selN("//student");for (JXNode jxNode : jxNodes) {System.out.println(jxNode);}System.out.println("--------------------");//4.2查询所有student标签下的name标签List<JXNode> jxNodes2 = jxDocument.selN("//student/name");for (JXNode jxNode : jxNodes2) {System.out.println(jxNode);}System.out.println("--------------------");//4.3查询student标签下带有id属性的name标签List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");for (JXNode jxNode : jxNodes3) {System.out.println(jxNode);}System.out.println("--------------------");//4.4查询student标签下带有id属性的name标签 并且id属性值为itcastList<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");for (JXNode jxNode : jxNodes4) {System.out.println(jxNode);}


http://www.mrgr.cn/p/87258250

相关文章

uniapp实现预约时间选择弹窗组件

做了个组件&#xff0c;实现出当日预约时间组件&#xff0c;效果图如下 废话不多说&#xff0c;直接上代码&#xff0c;代码简单&#xff0c;参数自己任意改 <template><view class"inventory"><u-popup :show"show" :round"10"…

windows环境安装elasticsearch+kibana并完成JAVA客户端查询

下载elasticsearch和kibana安装包 原文连接&#xff1a;https://juejin.cn/post/7261262567304298554 elasticsearch官网下载比较慢&#xff0c;有时还打不开&#xff0c;可以通过https://elasticsearch.cn/download/下载&#xff0c;先找到对应的版本&#xff0c;最好使用迅…

Docker 入门终极指南[详细]

前言 富 Web 时代&#xff0c;应用变得越来越强大&#xff0c;与此同时也越来越复杂。集群部署、隔离环境、灰度发布以及动态扩容缺一不可&#xff0c;而容器化则成为中间的必要桥梁。 本节我们就来探索一下 Docker 的神秘世界&#xff0c;从零到一掌握 Docker 的基本原理与实…

【Java】零基础上手SpringBoot学习日记(day1)

前言 此帖为本人学习Springboot时的笔记&#xff0c;由于是个接触计算机一年左右的新手&#xff0c;也没有网站开发经验&#xff0c;所以有些地方的理解会比较浅显并且可能会出现错误&#xff0c;望大佬们多多包涵和指正。 Web应用开发 在我的理解中&#xff0c;Web应用的开发…

opencv-28 自适应阈值处理-cv2.adaptiveThreshold()

什么是自适应阈值处理? 对于色彩均衡的图像&#xff0c;直接使用一个阈值就能完成对图像的阈值化处理。但是&#xff0c;有时图像的色彩是不均衡的&#xff0c;此时如果只使用一个阈值&#xff0c;就无法得到清晰有效的阈值分割结果图像。 有一种改进的阈值处理技术&#xff…

基础概念:图片的卷积可视化结果

1. 前言 之前介绍过卷积的基本概念&#xff0c;具体的可以参考图片的卷积和池化操作&#xff0c;这里给出可视化的操作&#xff0c;因为卷积在初学的时候比较抽象&#xff0c;现在有时间就写写看&#xff0c;希望可以给初学的同学一点启发吧(这里前提是学过pytorch和相关的图像…

【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)

目录 一、初始化列表 ⭕初始化列表概念 ⭕初始化列表的优点 ⭕使用场景 ⭕explicit关键字 二、Static成员 ⭕Static成员概念 &#x1f534;静态数据成员&#xff1a; &#x1f534;静态函数成员&#xff1a; ⭕使用静态成员的优点 ⭕使用静态成员的注意事项 三、友…

大数据面试题之Elasticsearch:每日三题(七)

大数据面试题之Elasticsearch:每日三题 1.Elasticsearch索引文档的流程&#xff1f;2.Elasticsearch更新和删除文档的流程&#xff1f;3.Elasticsearch搜索的流程&#xff1f; 1.Elasticsearch索引文档的流程&#xff1f; 协调节点默认使用文档ID参与计算(也支持通过routing)&a…

微服务项目,maven无法加载其他服务依赖

微服务项目&#xff0c;导入了工具类工程&#xff0c;但是一直报错&#xff0c;没有该类&#xff0c; 检查maven 这里的Maven的版本与idea版本不匹配可能是导致依赖加载失败的最重要原因 检查maven配置&#xff0c;我这是原来的maven&#xff0c;home 修改之后,就不报错了

秒级体验本地调试远程 k8s 中的服务

点击上方蓝色字体&#xff0c;选择“设为星标” 回复”云原生“获取基础架构实践 背景 在这个以k8s为云os的时代&#xff0c;程序员在日常的开发过程中&#xff0c;肯定会遇到各种问题&#xff0c;比如&#xff1a;本地开发完&#xff0c;需要部署到远程k8s集群&#xff0c;本地…

TCP/IP协议详解(二)

目录内容 TCP协议的可靠性 TCP的三次握手 TCP的四次挥手 C#中&#xff0c;TCP/IP建立 三次握手和四次挥手常见面试题 在上一篇文章中讲解了TCP/IP的由来以及报文格式&#xff0c;详情请见上一篇文章&#xff0c;现在接着来讲讲TCP/IP的可靠性以及通过代码的实现。 在TCP首部的…

算法通过村第二关-链表白银笔记|指定区间反转

文章目录 前言链表反转|指定区间内头插法&#xff1a;穿针引线法&#xff1a; 总结 前言 提示&#xff1a;人啊&#xff0c;果然跟花一样&#xff0c;开花前的等待无比漫长&#xff0c;绽放的魅力却转瞬即逝。 链表反转|指定区间内 参考题目&#xff1a;92. 反转链表 II - 力…

Vue(待续)

概念 一套用于构建用户界面的渐进式JavaScript框架 Vue可以自底向上逐层的应用&#xff1a; 简单应用:只需一个轻量小巧的核心库。 复杂应用:可以引入各式各样的Vue插件。 1.采用组件化模式&#xff0c;提高代码复用率、且让代码更好维护。 2.声明式编码&#xff0c;让编码人员…

【iOS】—— 持久化

文章目录 数据持久化的目的iOS中数据持久化方案数据持久化方式分类内存缓存磁盘缓存 沙盒机制获取应用程序的沙盒路径沙盒目录的获取方式 持久化数据存储方式XML属性列表Preferences偏好设置&#xff08;UserDefaults&#xff09;数据库存储什么是序列化和反序列化&#xff0c;…

DAY1,Qt [ 手动实现登录框(信息调试类,按钮类,行编辑器类,标签类的使用)]

1.手动实现登录框&#xff1b; ---mychat.h---头文件 #ifndef MYCHAT_H #define MYCHAT_H#include <QWidget> #include <QDebug> //打印信息 #include <QIcon> //图标 #include <QPushButton> //按钮 #include <QLineEdit> //行编辑器类 #in…

TCP/IP协议

TCP/IP 是一类协议系统&#xff0c;它是用于网络通信的一套协议集合 物理层 所谓的物理层&#xff0c;是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号&#xff0c;比如亮度、电压或者振幅。对于数字应用来说&#xff0c;我们只需要两种物理信号来分别…

分冶算法 剑指 07 重建二叉树 排序算法:剑指45 把数组排成最小的数 10-I 斐波那契数列

来记录几个注意事项 1.vector容器里利用find&#xff08;&#xff09;函数 不同于map&#xff08;map有find方法&#xff09;&#xff0c;vector本身是没有find这一方法&#xff0c;其find是依靠algorithm来实现的。 所以要包含头文件 #include <iostream> #include <…

特定Adreno GPU的Android设备发生冻屏问题

1&#xff09;特定Adreno GPU的Android设备发生冻屏问题 ​2&#xff09;Unity版本升级后&#xff0c;iOS加载UnityFramework bundle闪退 3&#xff09;关于RectTransfrom.rect在屏幕空间中表示的相关问题 4&#xff09;Unity Mesh泄露问题 这是第345篇UWA技术知识分享的推送&a…

计算机网络——应用层

文章目录 **1 网络应用模型****2 域名系统DNS****3 文件传输协议FTP****4 电子邮件****4.1 电子邮件系统的组成结构****4.2 电子邮件格式与MIME****4.3 SMTP和POP3** **5 万维网WWW****5.1 HTTP** 1 网络应用模型 客户/服务器模型 C/S 服务器服务于许多来自其他称为客户机的主…

ElementUI Select选择器如何根据value值显示对应的label

修改前效果如图所示&#xff0c;数据值状态应显示为可用&#xff0c;但实际上仅显示了状态码1&#xff0c;并没有显示其对应的状态信息。在排查了数据类型对应关系问题后&#xff0c;并没有产生实质性影响&#xff0c;只好对代码进行了如下修改。 修改前代码&#xff1a; <…