XML详解

文章目录

    • XML
      • 简介
      • 语法
      • 约束
        • DTD
        • Schema
    • 解析
      • Jsoup使用
        • 对象详解
          • Jsoup
          • Document
          • Elements
          • Element
          • Node

XML

简介

  • 概述:Extensible Markup Language 可扩展标记语言

    • 可扩展:标签都是自定义的。
  • 功能

    1. 数据存储:XML 可以用来存储结构化数据,包括文本、数字、日期等各种类型的数据
    2. 数据交换:XML 可以作为一种通用的数据交换格式,用于在不同系统之间传递数据
    3. 数据描述:XML 可以用来描述数据的结构和内容,例如通过定义 XML Schema 或 DTD 来定义数据的格式和约束
    4. 数据传输:XML 可以用作Web服务中的数据传输格式,例如 SOAP 协议中的消息体通常使用 XML 格式
    5. 数据显示:XML 可以用来描述数据的呈现方式,例如通过 XSLT 样式表将 XML 数据转换成 HTML 或其他格式进行显示
    6. 数据查询:XML 可以通过 XPath 或 XQuery 进行数据的查询和检索
    7. 数据验证:XML 可以通过 XML Schema 或 DTD 对数据进行验证,确保数据的格式和内容符合预期
  • XML 和 HTML 的区别

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

语法

  • 基本语法

    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>man</gender></user><user id='2'><name>小红</name><age>24</age><gender>woman</gender></user>
    </users>
    
  • 组成部分

    • 文档声明
    // 格式
    <?xml 属性列表 ?>
    

    属性列表

    1、version:版本号,必须的属性

    2、encoding:编码方式,告知解析引擎当前文档使用的字符集,默认,ISO-8859-1

    3、standalone:是否独立,取值 yes-不依赖其他文件 no-依赖其他文件

    • 指令:用来引入 CSS
    <?xml-stylesheet type="text/css" href="a.css" ?>
    
    • 标签:标签名称自定义
    标签自定义规则
    1、名称可以包含字母、数字以及其他的字符
    2、名称不能以字母 xml(或者 XML、Xml 等等)开始
    3、名称不能包含空格
    • 属性:id 属性值唯一
    • 文本:CDATA区,在该区域中的数据会被原样展示
    格式
    <![CDATA[数据]]>

约束

  • 概述:规定 xml 文档的书写规则

  • 作为框架的使用者(程序员)

    • 能够在xml中引入约束文档
    • 能够简单的读懂约束文档
  • 约束分类

    • DTD:一种简单的约束技术
    • Schema:一种复杂的约束技术

DTD
  • 分类

    • 内部 DTD:将约束规则定义在 XML 文档中
    • 外部 DTD:将约束规则定义在外部的 DTD 文件中
  • 引入方式

    位置引入格式
    本地
    网络
  • 代码示例

    <!ELEMENT students (student*) >			#定义了一个students的元素,包含0个或多个student元素
    <!ELEMENT student (name,age,sex)>		#定义了一个student元素,包含name、age、sex等子元素
    <!ELEMENT name (#PCDATA)>				#定义了一个名为name的元素,其内容为文本数据
    <!ELEMENT age (#PCDATA)>				#定义了一个名为age的元素,其内容为文本数据
    <!ELEMENT sex (#PCDATA)>				#定义了一个名为sex的元素,其内容为文本数据
    <!ATTLIST student number ID #REQUIRED>	#定义了一个名为number的属性,类型为ID,且必须存在
    
    <?xml version='1.0' ?>
    <!DOCTYPE students SYSTEM "student.dtd">
    <students><student number="s1"><name>李四</name><age>23</age><sex></sex></student>
    </students>
    

    注意:上述第一个是 DTD 文档约束,第二个是 XML 文档


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">
    

解析

  • 概述:操作 XML 文档,将文档中的数据读取到内存忠

  • 操作 XML 文档

    1. 解析(读取):将文档中的数据读取到内存中
    2. 写入:将内存中的数据保存到 XML 文档中,持久化存储。
  • XML 常见的解析器

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

    1. DOM:将标记语言文档一次性加载进内存,在内存中形成一棵 DOM 树(服务器端)
      • 优点:操作方便,可以对文档进行 CRUD 的所有操作
      • 缺点:占内存
    2. SAX:逐行读取,基于事件驱动的,读一行释放一行(手机端,浏览器端)
      • 优点:不占内存
      • 缺点:只能读取,不能增删改

Jsoup使用

  • 下载地址

  • 使用步骤:

    1. 导入刚才下载的 jar 包
    2. 获取 Document 对象
    3. 获取对应的标签 Element 对象
    4. 获取数据
  • 示例代码

    //2.1获取student.xml的path
    String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
    //2.2解析xml文档,加载文档进内存,获取dom树--->Document
    Document document = Jsoup.parse(new File(path), "utf-8");
    //3.获取元素对象 Element
    Elements 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);
    
对象详解
Jsoup
  • Jsoup:工具类,可以解析 HTML 或 XML 文档,返回 Document 对象

  • 方法

    方法作用
    parse(File in ,String charsetName)解析 XML 或 HTML 文件
    parse(String html)解析 XML 或 HTML 字符串
    parse(URL url , int timeoutMills)通过网络路径获取指定的 XML 或 HTML 的文档对象(可做爬虫)
Document
  • Document:文档对象,代表内存中的 DOM 树,获取任意 Element 对象

  • 方法

    方法作用
    getElementById(String id)根据id属性值获取唯一的element对象
    getElementsByTag(String tagName)根据标签名称获取元素对象集合
    getElementsByAttribute(String key)根据属性名称获取元素对象集合
    getElementsByAttributeValue(String key, String value)根据对应的属性名和属性值获取元素对象集合
Elements
  • Elements:元素 Element 对象的集合,可以当作 ArrayList 来使用
Element
  • Element:元素对象,获取子元素对象

  • 方法

    方法作用
    getElementById(String id)根据id属性值获取唯一的element对象
    getElementsByTag(String tagName)根据标签名称获取元素对象集合
    getElementsByAttribute(String key)根据属性名称获取元素对象集合
    getElementsByAttributeValue(String key, String value)根据对应的属性名和属性值获取元素对象集合
    String attr(String key)根据属性名称(不区分大小写)获取属性值
    String text()获取所有子标签的纯文本内容
    String html()获取标签体的所有内容(包括子标签的字符串内容)
Node
  • Node:节点对象,是 Document 和 Element 的父类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HSRP配置指南

实验大纲 第 1 部分&#xff1a;验证连通性 步骤 1&#xff1a;追踪从 PC-A 到 Web 服务器的路径 步骤 2&#xff1a;追踪从 PC-B 到 Web 服务器的路径 步骤 3&#xff1a;观察当 R3 不可用时&#xff0c;网络的行为 第 2 部分&#xff1a;配置 HSRP 主用和 备用路由器 步…

rasa3.X 自定义action的注册问题

rasa3.X 自定义action的注册问题 文章目录 rasa3.X 自定义action的注册问题前言一、问题重述二、问题解决 前言 幸好在这之前抽时间稍微看了一点django源码&#xff0c;让我对于python的导入机制有了一个概念。虽然还不是很确切的知道python import机制&#xff0c;不过在看到…

QT学习日记 | 初始QT

目录 一、创建QT文件 二、目录结构讲解 1、.pro文件 2、源文件与头文件 3、编译运行 4、界面文件 三、梦开始的地方&#xff08;Hello World&#xff01;&#xff09; 1、代码方式 2、拖拽方式 四、Qt中的“容器” 五、Qt的对象树机制 1、对象树的引入 2、对象树…

MySQL进阶之锁(全局锁以及备份报错解决)

锁 全局锁 全局锁就是对整个数据库实例加锁&#xff0c;加锁后整个实例就处于只读状态&#xff0c;后续的DML的写语句&#xff0c;DDL语 句&#xff0c;已经更新操作的事务提交语句都将被阻塞。 其典型的使用场景是做全库的逻辑备份&#xff0c;对所有的表进行锁定&#xff…

030-安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计

030-安全开发-JS应用&NodeJS指南&原型链污染&Express框架&功能实现&审计 #知识点&#xff1a; 1、NodeJS-开发环境&功能实现 2、NodeJS-安全漏洞&案例分析 3、NodeJS-开发指南&特有漏洞 演示案例&#xff1a; ➢环境搭建-NodeJS-解析安装&…

MySQL知识点总结(三)——事务

MySQL知识点总结&#xff08;三&#xff09;——事务 事务事务的四大特性ACID原子性一致性隔离性持久性 脏读、幻读、不可重复读脏读不可重复读幻读 隔离级别读未提交读已提交可重复读串行化 事务的原理InnoDB如何实现事务的ACID事务的两阶段提交redo log与binlog的区别事务两阶…

【DevOps】产品需求文档(PRD)与常见原型软件

文章目录 1、PRD介绍1.1、概述1.2、前提条件1.3、主要目的1.4、关键内容1.5、表述方式1.6、需求评审人员1.7、一般内容结构 2、需求流程3、常见原型软件3.1、Word3.2、Axure3.2.1、详细介绍3.2.2、应用分类3.2.3、优缺点 3.3、摹客RP3.4、蓝湖3.5、GUI Design Studio 1、PRD介绍…

业务流程自动化平台在制造业应用案例,助力业务自动化、智能化

捷昌驱动成立于2000年&#xff0c;并于2018年9月在上海证券交易所上市&#xff0c;是一家专注于线性驱动产品研发、生产及销售的科技集团。 公司整合全球资源&#xff0c;为智慧办公、医疗康护、智能家居、工业自动化等关联产业提供驱动及智能控制解决方案&#xff0c;以科技驱…

荣耀手机如何录屏?在线分享3个录屏方法

荣耀手机如何录屏&#xff1f;荣耀手机录屏是一项非常实用的功能&#xff0c;它可以帮助我们轻松记录手机屏幕上的内容&#xff0c;无论是游戏攻略、教育学习还是工作演示&#xff0c;都能够方便地进行录制。通过录屏&#xff0c;我们可以随时随地记录和分享自己的操作和见解。…

探究Steam爆款游戏”幻兽帕鲁“:玩家评价揭秘

探究Steam爆款游戏”幻兽帕鲁“&#xff1a;玩家评价揭秘 文章目录 探究Steam爆款游戏”幻兽帕鲁“&#xff1a;玩家评价揭秘1 背景描述2 数据说明3 数据来源4 问题描述5 数据探索与预处理5.1 数据加载5.2 数据清洗 6 数据分析6.1 评论分布分析6.2 评论内容情感分析6.3 地理分布…

力扣热门100题刷题笔记 - 2.两数相加

力扣热门100题 - 2.两数相加 题目链接&#xff1a;2.两数相加 题目描述&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。请你将两个数相加&#xff0c;并以相同形式返…

图书|基于Springboot的图书管理系统设计与实现(源码+数据库+文档)

图书管理系统目录 目录 基于Springboot的图书管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、个人中心 2、管理员管理 3、用户管理 4、图书出版社管理 5、公告类型管理 6、所在书架管理 7、图书类型管理 8、论坛管理 9、公告信息管理 10、图书信…

【数据结构】(分治策略)中位数的查询和最接近点对问题

中位数查询&#xff1a; 寻找一组字符串中第k小的数&#xff0c;返回其值和下标。 不可以有重复值&#xff08;在缩小规模的时候&#xff0c;会导致程序死循环&#xff09; 相对位置的转换体现了分治策略的思想。> 划分函数 int partition(int *nums,int left, int rig…

Jmeter 自动化性能测试常见问题汇总

一、request 请求超时设置 timeout 超时时间是可以手动设置的&#xff0c;新建一个 http 请求&#xff0c;在“高级”设置中找到“超时”设置&#xff0c;设置连接、响应时间为2000ms。 1. 请求连接超时&#xff0c;连不上服务器。 现象&#xff1a; Jmeter表现形式为&…

SQL sever2008中创建用户并赋权

一、创建数据库dream CREATE DATABASE dream; 二、创建登录用户XZS 法一&#xff1a;使用SSMS创建 通过查询 sys.syslogins 系统视图来确定当前登录是否具有系统管理员权限。执行以下查询语句&#xff1a; SELECT name, isntname FROM sys.syslogins WHERE sysadmin 1;选…

初始mach-o文件及在项目中应用

本文字数&#xff1a;2250字 预计阅读时间&#xff1a;15分钟 01 认识mach-o的必要性 了解mach-o的结构可以帮助认识系统加载二进制文件的动态链接和静态链接。应用层面&#xff0c;使用initialize的c函数计算启动时间耗时也需要以mach-o的结构知识为铺垫。还可以用在使用clang…

2、排列重要性 Permutation Importance

您认为模型哪些特性是重要的? 文章目录 1、简介2、工作原理3、代码示例4、解释排列重要性1、简介 对于模型来说,我们可能会问的最基本的一个问题是:哪些特征对预测影响最大? 这个概念被称为特征重要性。 有多种方法可以衡量特征重要性。一些方法回答了上面提到的问题的微…

怎么把几百M大小的视频做成二维码?扫码播放视频在线教程

怎么把几百M大小的视频做成一个二维码展示呢&#xff1f;通过二维码来作为视频的载体是现在很常用的一种手段&#xff0c;通过这种方式不仅成本比较低&#xff0c;而且传播速度也比较快&#xff0c;通过访问云端数据就可以播放视频。 视频二维码生成的方法一般会通过二维码生成…

C++模版初阶

前言 在本文我们将学习模版的基础知识点&#xff0c;了解泛型编程。 一、泛型编程 1、引入 我们如何实现一个通用的交换函数呢&#xff1f; 我们先看一段代码&#xff0c;如下&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right te…

机器学习 | 如何利用集成学习提高机器学习的性能?

目录 初识集成学习 Bagging与随机森林 Otto Group Product(实操) Boosting集成原理 初识集成学习 集成学习&#xff08;Ensemble Learning&#xff09;是一种通过组合多个基本模型来提高预测准确性和泛化能力的机器学习方法。它通过将多个模型的预测结果进行整合或投票来做…