使用xsd验证xml格式的正确性

1.1 基础知识介绍

  • XML简介:XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。xml文件、xml消息。
  • XSD简介:是XML Schema Description的缩写,描述XML的结构,以验证XML是否符合要求。编写直接使用xml语言,无需学习新语言,描述了可能出现的元素、属性和值等。

1.2 XSD的核心组件

元素和属性定义:如何定义元素和属性,包括简单类型和复杂类型。

  • element – 定义普通元素,类型为内置类型(xs:string\xs:date\xs:decimal\xs:integer\xs:boolean\xs:time)
  • simpleType – 在普通类型基础上,有其余额外的格式要求(通过xs:restriction来限定,后面会详细说明限定如何设置)
  • complexType – 含有多个子元素(xs:sequence–子元素必须按顺序出现,默认只出现一次,可通过minOccurs/maxOccurs设置出现次数)

student.xml:

<students><class>Grade one of high school</class><student><name>test1</name><age>16</age></student><student><name>test2</name><age>15</age></student>
</students>

class – 为element 简易元素
name – 为simpleType,名字格式有特殊要求,必须是test开头+数字
student – 为compleType,含有多个子元素,且可出现1次至无数次
student.xsd:

<?xml version="1.0" encoding='utf-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="students"><xs:complexType><xs:sequence><xs:element name="class" type="xs:string"/><xs:element name='student' maxOccurs='unbounded'><xs:complexType><xs:sequence><xs:element name='name'><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value='test\d{1,}'/></xs:restriction></xs:simpleType></xs:element><xs:element name="age" type="xs:integer"/></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element>
</xs:schema>
  • 模型组:介绍xs:sequence, xs:choice, xs:all等模型组的使用和区别。
    • xs:sequence:用于定义一组元素,这些元素必须按照在 xs:sequence 中声明的顺序出现在XML文档中。
    • xs:choice:允许在其子元素中选择一个出现。只能选择其中一个。
    • xs:all:允许其子元素以任何顺序出现,每个元素最多出现一次。这适用于元素的顺序不重要的情况。但子元素不能是复杂元素。
  • 数据类型:内置数据类型和用户自定义数据类型的使用。
    • 常用的内置数据类型:
      • xs:string
      • xs:decimal
      • xs:integer
      • xs:boolean
      • xs:date
      • xs:time
    • 用户自定义类型:xs:restriction限定。
      • enumeration 定义可接受值列表
<?xml version="1.0" encoding='utf-8'?>
<!-- 性别元素的值只能是男或女 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="gender"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value=''/><xs:enumeration value=''/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • fractionDigits 指定允许的最大小数位数。必须大于或等于零
<?xml version="1.0" encoding='utf-8'?>
<!-- 体重元素,最多2位小数位  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='weight'><xs:simpleType><xs:restriction base='xs:decimal'><xs:fractionDigits value='2'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
- length 指定允许的精确字符数或列表项数。必须大于或等于零
<?xml version="1.0" encoding='utf-8'?>
<!-- 学号元素,长度必须为10位数  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='studentid'><xs:simpleType><xs:restriction base="xs:string"><xs:length value='10'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • maxExclusive 指定数值的上界(值必须小于此值)
<?xml version="1.0" encoding='utf-8'?>
<!-- 分数元素,最大值为150,整数位至少1位,至多3位,小数位至多2位,小数位可以没有 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='score'><xs:simpleType><xs:restriction base="xs:decimal"><xs:maxExclusive value='151'/><xs:pattern value='\d{1,3}.?\d{0,2}'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • maxInclusive 指定数值的上限(值必须小于或等于此值)
<?xml version="1.0" encoding='utf-8'?>
<!-- 分数元素,最大值为150,整数位至少1位,至多3位,小数位至多2位,小数位可以没有 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='score'><xs:simpleType><xs:restriction base="xs:decimal"><xs:maxInclusive value='150'/><xs:pattern value='\d{1,3}.?\d{0,2}'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • maxLength 指定允许的最大字符数或列表项数。必须大于或等于零
<?xml version="1.0" encoding='utf-8'?>
<!-- 座右铭元素,最长字符数限制为100字符 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='motto'><xs:simpleType><xs:restriction base="xs:string"><xs:maxLength value='100'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • minExclusive 指定数值的下界(值必须大于此值)
<?xml version="1.0" encoding='utf-8'?>
<!-- 分数元素,最小值为0,最大值为150,整数位至少1位,至多3位,小数位至多2位,小数位可以没有 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='score'><xs:simpleType><xs:restriction base="xs:decimal"><xs:minExclusive value='-1'/><xs:maxInclusive value='150'/><xs:pattern value='\d{1,3}.?\d{0,2}'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • minInclusive 指定数值的下限(值必须大于或等于此值)
<?xml version="1.0" encoding='utf-8'?>
<!-- 分数元素,最小值为0,最大值为150,整数位至少1位,至多3位,小数位至多2位,小数位可以没有 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='score'><xs:simpleType><xs:restriction base="xs:decimal"><xs:minInclusive value='0'/><xs:maxInclusive value='150'/><xs:pattern value='\d{1,3}.?\d{0,2}'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • minLength 指定允许的最小字符数或列表项数。必须大于或等于零
<?xml version="1.0" encoding='utf-8'?>
<!-- 座右铭元素,最短为1个字符,最长字符数限制为100字符 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='motto'><xs:simpleType><xs:restriction base="xs:string"><xs:minLength value='1'/><xs:maxLength value='100'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • pattern 定义可接受的确切字符序列
<?xml version="1.0" encoding='utf-8'?>
<!-- 性别元素的值只能是男或女 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="gender"><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value='[男|女]'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • totalDigits 指定允许的精确数字数。必须大于零
<?xml version="1.0" encoding='utf-8'?>
<!-- 年龄元素的值数字为2位 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="age"><xs:simpleType><xs:restriction base="xs:integer"><xs:totalDigits value='2'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>
  • whiteSpace 指定如何处理空白字符(换行符、制表符、空格和回车),有三个可能的值:
      1. preserve:保留所有空白字符。这是默认行为,如果不指定 whiteSpace,则XML解析器会保留输入中的所有空白。
      1. replace:将所有空白字符替换为普通空格。这包括将制表符、换行符和回车符替换为空格。
      1. collapse:首先将所有空白字符替换为普通空格,然后合并连续的空格为一个空格,并删除字符串开头和结尾的空格。
<?xml version="1.0" encoding='utf-8'?>
<!-- 座右铭元素,最短为1个字符,最长字符数限制为100字符,并且限定前后不能有空格,中间不能换行 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name='motto'><xs:simpleType><xs:restriction base="xs:string"><xs:minLength value='1'/><xs:maxLength value='100'/><xs:whiteSpace value='collapse'/></xs:restriction></xs:simpleType></xs:element>
</xs:schema>

1.3 高级XSD特性

继承和多态:使用xs:extension和xs:restriction进行类型扩展和限制。

  • xs:extension:在基础类型上新增新的元素。eg: 在基础c_student类型上,新增gender元素。
<?xml version="1.0" encoding='utf-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:complexType name="c_student"><xs:sequence><xs:element name='name'><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value='test\d{1,}'/></xs:restriction></xs:simpleType></xs:element><xs:element name="age" type="xs:integer"/></xs:sequence></xs:complexType><xs:element name='student'><xs:complexType><xs:complexContent><xs:extension base='c_student'><xs:sequence><xs:element name="gender"><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value='[男|女]'/></xs:restriction></xs:simpleType></xs:element></xs:sequence></xs:extension></xs:complexContent></xs:complexType></xs:element>
</xs:schema>
  • xs:restriction:修改已存在的元素的值,必须重新对所有元素定义。eg: 对基础类型c_student的age设置默认值16.
<?xml version="1.0" encoding='utf-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:complexType name="c_student"><xs:sequence><xs:element name='name'><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value='test\d{1,}'/></xs:restriction></xs:simpleType></xs:element><xs:element name="age" type="xs:integer"/></xs:sequence></xs:complexType><xs:element name='student'><xs:complexType><xs:complexContent><xs:restriction base='c_student'><xs:sequence><xs:element name='name'><xs:simpleType><xs:restriction base="xs:string"><xs:pattern value='test\d{1,}'/></xs:restriction></xs:simpleType></xs:element><xs:element name="age" type="xs:integer" default='16'/></xs:sequence></xs:restriction></xs:complexContent></xs:complexType></xs:element>
</xs:schema>
  • 文件引用:xs:import 和xs:include进行文件间的引用。
    • xs:include:命名空间相同的两个文件,可以使用include引用另一个xsd文件的定义元素和类型。

base.xsd

<?xml version="1.0" encoding='utf-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace='basic.type'><xs:simpleType name="t_name"><xs:restriction base="xs:string"><xs:pattern value='test\d{1,}'/></xs:restriction></xs:simpleType><xs:simpleType name="t_gender"><xs:restriction base="xs:string"><xs:enumeration value=''/><xs:enumeration value=''/></xs:restriction></xs:simpleType><xs:simpleType name='t_studentid'><xs:restriction base="xs:string"><xs:length value='10'/></xs:restriction></xs:simpleType><xs:simpleType name='t_motto'><xs:restriction base="xs:string"><xs:minLength value='1'/><xs:maxLength value='100'/><xs:whiteSpace value='collapse'/></xs:restriction></xs:simpleType><xs:simpleType name="t_age"><xs:restriction base="xs:integer"><xs:totalDigits value='2'/></xs:restriction></xs:simpleType>
</xs:schema>

fat_student.xsd:命名空间设置成和basic.xsd一致。与base.xsd放在同一目录下。

<?xml version="1.0" encoding='utf-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:prd='basic.type' targetNamespace='basic.type'><xs:include schemaLocation="base.xsd"/><xs:element name="students"><xs:complexType><xs:sequence><xs:element name="student" maxOccurs='unbounded'><xs:complexType><xs:sequence><xs:element name="name" type="prd:t_name"/><xs:element name='age' type="prd:t_age"/><xs:element name='studentid' type="prd:t_studentid"/><xs:element name='gender' type="prd:t_gender"/><xs:element name='motto' type="prd:t_motto"/></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element>
</xs:schema>
  • xs:import:命名空间不相同的两个文件,可以使用import引用,并使用namespace指明引用文件的命名空间名。

fat_student2.xsd:不指定该xsd的命名空间或命名空间设置成和base.xsd不一致。与base.xsd放在同一目录下。

<?xml version="1.0" encoding='utf-8'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:prd='basic.type'><xs:import namespace='basic.type' schemaLocation='base.xsd'/><xs:element name="students"><xs:complexType><xs:sequence><xs:element name="student" maxOccurs='unbounded'><xs:complexType><xs:sequence><xs:element name="name" type="prd:t_name"/><xs:element name='age' type="prd:t_age"/><xs:element name='studentid' type="prd:t_studentid"/><xs:element name='gender' type="prd:t_gender"/><xs:element name='motto' type="prd:t_motto"/></xs:sequence></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element>
</xs:schema>

注:如果需要引入多个xsd,可以加多几个include或import节点。

1.4 python中使用XSD验证XML

1.4.1 传入xml文件的路径:

import lxml.etree as ETdef validateXMLByXSD(file_xml, file_xsd):""" Verify that the XML compliance with XSDArguments:1. file_xml: Input xml file2. file_xsd: xsd file which needs to be validated against xmlReturn:No return value"""try:print("Validating:{0}".format(file_xml))print("xsd_file:{0}".format(file_xsd))xml_doc = ET.parse(file_xml)xsd_doc = ET.parse(file_xsd)xmlschema = ET.XMLSchema(xsd_doc)xmlschema.assert_(xml_doc)return Trueexcept ET.XMLSyntaxError as err:print("PARSING ERROR:{0}".format(err))return Falseexcept AssertionError as err:print("Incorrect XML schema: {0}".format(err))return Falseif __name__ == '__main__':print(validateXMLByXSD('xml文件路径', 'xsd文件路径'))

1.4.2 传入xml字符串:

import lxml.etree as ETdef validateXMLByXSD(str_xml, file_xsd):""" Verify that the XML compliance with XSDArguments:1. str_xml: Input xml string2. file_xsd: xsd file which needs to be validated against xmlReturn:No return value"""try:print("Validating:{0}".format(str_xml))print("xsd_file:{0}".format(file_xsd))xml_doc = ET.fromstring(str_xml)xsd_doc = ET.parse(file_xsd)xmlschema = ET.XMLSchema(xsd_doc)xmlschema.assert_(xml_doc)return Trueexcept ET.XMLSyntaxError as err:print("PARSING ERROR:{0}".format(err))return Falseexcept AssertionError as err:print("Incorrect XML schema: {0}".format(err))return Falseif __name__ == '__main__':print(validateXMLByXSD('xml字符串', 'xsd文件路径'))

1.5 实战演练

①使用student.xsd验证student.xml的正确性:

  • 不修改上述student.xml和student.xsd文件内容,直接使用1.4.1中代码验证。
    在这里插入图片描述

  • 修改student.xml文件内容age为非数字:
    在这里插入图片描述

  • 删掉student.xsd中maxOccurs的配置,故student元素仅能出现一次:
    在这里插入图片描述

②使用fat_student2.xsd验证student2.xml的正确性:

student2.xml
<students><student><name>test1</name><age>16</age><studentid>1000000001</studentid><gender></gender><motto>努力会有回报的。</motto></student><student><name>test2</name><age>17</age><studentid>1000000002</studentid><gender></gender><motto>勤奋。</motto></student>
</students>

在这里插入图片描述

studentid不符合长度要求
在这里插入图片描述

缺少gender节点:
在这里插入图片描述

其他:

1.当xml的根元素没有设置命名空间时,对应的xsd也不能设置命名空间targetNamespace,不会assert时会报错。
2.可以使用fixed固化某个元素的值,和default用法一致。
3.该方式验证xml格式正确性,轻代码重xsd配置,但也有好处,当xml格式发生改变时,无需修改代码,只需要对应修改xsd即可,且相对代码来说,易上手。

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

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

相关文章

【linux】详解vim编辑器

基本指令 【linux】详解linux基本指令-CSDN博客 【linux】详解linux基本指令-CSDN博客 vim的基本概念 vim有很多模式&#xff0c;小编只介绍三种就能让大家玩转vim了&#xff0c; 分别是&#xff1a; 正常/普通/命令模式 插入模式 末行/底行模式 命令模式 控制屏幕光标的…

nssctf(Web刷题)

[SWPUCTF 2021 新生赛]gift_F12 打开题目是一个时间页面&#xff0c;不过看了一会儿发现没有什么用 直接F12打开网页源代码 CtrlF搜索flag 找到了flag NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft} [第五空间 2021]签到题 NSSCTF{welcometo5space} [SWPUCTF 2021 新生赛…

【东山派Vision K510开发板试用笔记】nncase的安装

概述 最近试用了百问网提供的东山派Vision开发板&#xff0c;DongshanPI-Vision开发板是百问网针对AI应用开发设计出来的一个RSIC-V架构的AI开发板&#xff0c;主要用于学习使用嘉楠的K510芯片进行Linux项目开发和嵌入式AI应用开发等用途。DongshanPI-Vision开发板采用嘉楠公司…

RedHat9 | 配置转发DNS服务器

一、实验环境 1、介绍 转发服务器&#xff08;Forwarding Server&#xff09;接收查询请求&#xff0c;但不直接提供DNS解析&#xff0c;而是将所有查询请求发送到另外的DNS服务器&#xff0c;将查询的结果返回后保存到缓存中。如果没有指定转发服务器&#xff0c;DNS服务器会…

LSTM实例解析

大家好&#xff0c;这里是七七&#xff0c;今天带给大家的实例解析。以前也用过几次LSTM模型&#xff0c;但由于原理不是很清楚&#xff0c;因此不能清晰地表达出来&#xff0c;这次用LSTM的时候&#xff0c;去自习研究了原理以及代码&#xff0c;来分享给大家此次经历。 一、简…

GPT‑4o普通账户也可以免费用

网址 https://chatgpt.com/ 试了一下&#xff0c;免费的确实显示GPT‑4o的模型&#xff0c;问了一下可以联网&#xff0c;不知道能不能通过插件出图 有兴趣的可以试试

3.6 enum枚举类型

本节必须掌握的知识点&#xff1a; 示例十一 代码分析 汇编解析 3.6.1 示例十一 enum定义枚举类型&#xff0c;它本质是一种整数类型&#xff08;等同int&#xff09;。所谓枚举就是一一列举的意思。在实际应用中&#xff0c;一个星期有七天&#xff0c;一年有十二个月等。如…

FBB-Frontiers in Bioengineering and Biotechnology

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 Frontiers in Bioengineering and Biotechnology是专注生物工程和生物技术领域的开放获取期刊。 研究范围涵盖生物材料、生物力学、生物工艺工程、生物安全和生物安保&#xff0c;生物传…

SpringCloud(1)-Eureka相关配置

1.新建Module-注册中心 作为注册中心 1.1配置 pom.xml <!-- 引入 eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency&g…

面向对象-----继承

前面向大家介绍了面向对象中的封装性&#xff0c;今天再来向大家介绍面向对象的继承和多态的两大特性。 1.继承 1.1 为什么需要继承&#xff1f; 在java语言中&#xff0c;我们用类来描述世间万物&#xff0c;虽然万物非常复杂&#xff0c;但总有一些共同点&#xff0c;如果…

【贪心算法题目】

1. 柠檬水找零 这一个题目是一个比较简单的模拟算法&#xff0c;只需要根据手里的钱进行找零即可&#xff0c;对于贪心的这一点&#xff0c;主要是在20元钱找零的情况下&#xff0c;此时会出现两种情况&#xff1a;10 5 的组合 和 5 5 5 的组合&#xff0c;根据找零的特点&a…

网络模型-Qinq配置与应用

Qinq配置与应用 通过配置Qinq来实现利用公网提供的VLAN100使企业1互通&#xff0c;利用公网提供的VLAN200使企业2互通不同企业之间互相隔离。并通过在连接其它厂商设备的接口上配置修改0in0外层VLAN Tag的TPID值&#xff0c;来实现与其它厂商设备的互通。 一、创建VLAN #在Swi…

C - Sigma Problem(AtCoder Beginner Contest 353)

题目的链接: C - Sigma Problem (atcoder.jp) 题目&#xff1a; 样例&#xff1a; 题目大致含意: 给你n个数&#xff0c;让你对这n个数进行操作&#xff0c;比如当前是第i个&#xff0c;那么让a[i] 和 后面的每个数进行相加, 例如a[i] a[i 1] 注意的是a[i] a[i 1]的结果…

Stable Diffusion 3报告

报告链接&#xff1a;Stable Diffusion 3: Research Paper — Stability AI 文章目录 要点表现架构细节通过重新加权改善整流流量Scaling Rectified Flow Transformer Models灵活的文本编码器RF相关论文 引言 随着人工智能技术的飞速发展&#xff0c;文本到图像生成领域正经…

【map、set】C++用红黑树来封装map、set容器

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | Linux | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解map和set之用红黑树来封装map、set容器的相关内容。 如果看到最后您…

CasaOS系统玩客云安装内网穿透工具实现无公网IP远程访问

文章目录 前言1. CasaOS系统介绍2. 内网穿透安装3. 创建远程连接公网地址4. 创建固定公网地址远程访问 前言 2月底&#xff0c;玩客云APP正式停止运营&#xff0c;不再提供上传、云添加功能。3月初&#xff0c;有用户进行了测试&#xff0c;局域网内的各种服务还能继续使用&am…

kubeadm部署k8s v1.28

一、主机准备 主机硬件配置说明 作用IP地址操作系统配置k8s-master01192.168.136.55openEuler-22.03-LTS-SP12颗CPU 4G内存 50G硬盘k8s-node01192.168.136.56openEuler-22.03-LTS-SP12颗CPU 4G内存 50G硬盘k8s-node02192.168.136.57openEuler-22.03-LTS-SP12颗CPU 4G内存 50G…

C++: 多态

目录 一、多态的概念 二、多态的定义及实现 2.1虚函数 2.2虚函数的重写 2.3多态的构成条件 2.4虚函数重写的两个例外 1.协变 2.析构函数的重写 2.5虚函数重写的实质 2.6override 和 final&#xff08;C11&#xff09; 1.final 2.override 2.7重载、覆盖&#xff0…

Leetcode刷题笔记2:数组基础2

导语 leetcode刷题笔记记录&#xff0c;本篇博客记录数组基础1部分的题目&#xff0c;主要题目包括&#xff1a; 977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II 知识点 滑动窗口 所谓滑动窗口&#xff0c;就是不断的调节子序列的起始位…

反射获取或修改对象属性的值

利用反射既可以获取也可以写入,首先咱们先写几个获取的例子。 一:利用反射修改各数据(利用resultField.set修改) 首先定义实体类 public class Dog {private String dogUser;private int age;把DogUser的"hahaha"改为"geggegegege" Dog dog = new Do…