当前位置: 首页 > news >正文

JavaWeb 学习笔记 XML 和 Json 篇 | 020

今日推荐语

愿你遇见好天气,愿你的征途铺满了星星——圣埃克苏佩里

日期        学习内容        打卡编号
2025年01月23日JavaWeb笔记 XML 和 Json 篇020

前言

哈喽,我是菜鸟阿康。

以下是我的学习笔记,既做打卡也做分享,希望对你也有所帮助,不足之处欢迎大家交流指正。

(请忽略错误的大纲编号,我直接从笔记中粘贴过来的,就没严格纠正了,重点在内容!)

文末和主页有往期学习笔记,大家感兴趣也可以去看下。

继续加油!铁铁们!


(一)概述

1.概述

  • 学习前要求:学习过 HTML 和 JS
  • 定义:XML 指可扩展标记语言EXtensible Markup Language),是数据的一种表示格式,可以用来表示数据结构,常用于做数据的传输与存储。
    • XML 是一种标记语言,很类似 HTML(由标签构成)
    • XML 的设计宗旨是传输数据,而非显示数据(html)
    • XML 标签没有被预定义,标签可以自定义
  • 注意:XML 和 HTML 不同:HTML 旨在显示信息,而 XML 旨在传输信息。

2.样例

<?xml version="1.0" encoding="ISO-8859-1"?>
<note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body>
</note>

3.树结构

官方建议,类似于 category 这类标签,建议直接定义为元素

避免XML属性

  • 属性无法包含多重的值(元素可以)
  • 属性无法描述树结构(元素可以)
  • 属性不易扩展(为未来的变化)
  • 属性难以阅读和维护

(二)XML语法与引用

1.语法规则

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始名称不能以字符 “xml”(或者 XML、Xml)开始(验证了是可以的,但是不建议使用,担心后面解析xml会出现问题)
  • 名称不能包含空格
  • 对大小写敏感
  • 不能嵌套,标签成对出现,正常开始正常结束

良好的命名习惯

  • 见名知意
  • 名称应当比较简短,比如:,而不是:
  • 避免使用 - . :
  • 尽量和数据库命名一致

2.特殊符号引用

在 xml 需要引用<,>等特殊符号时,需要按照以下要求进行特殊引用

(三)XML模板定义与约束定义

1.模板定义

在 idea 新建 XML 文件一般是通过新建文件,后缀.xml定义完成,需要自己声明或者修改文件的声明,操作麻烦,对于这类重复操作可以在 Setting 中自定义,以后右键新建就会出现 XML 格式的文件,并有声明。

2.DTD约束

DTD(Document Type Definition,文档类型定义),可以简单理解为 XML 文件中的固定标签格式。

文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

编写 DTD 约束文件,后缀是以 .dtd 结尾

  • 注意:不要去使用相对路径,我们使用绝对路径才能导入

在xml 文件中引用即可

<!DOCTYPE note SYSTEM "dtd文件名">

3.Schema约束

  • 定义:XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD
  • 约束能力:
    • 定义可出现在文档中的元素
    • 定义可出现在文档中的属性
    • 定义哪个元素是子元素
    • 定义子元素的次序
    • 定义子元素的数目
    • 定义元素是否为空,或者是否可包含文本
    • 定义元素和属性的数据类型
    • 定义元素和属性的默认值以及固定值
  • 本身就是个xml 文件,只不过格式更加严谨,能够去约束具体的字段值类型
  • 后缀是.xsd
  • 以后学习 mybatis 的时候,会有很多的约束,直接用就行了不用自己去定义

4.读取XML

4.1 读取方式和解析器
  • 方式
    • DOM
      • 将标记语言的文字全部一次性读进内存里面,在内存中形成一棵树
      • 优点:操作方便,可以增删改查
      • 缺点:占内存
    • SAX
      • 逐行读取,基于事件驱动的
      • 优点:不占内存
      • 缺点:只能读,不能够增删改
  • 常见的解析器
    • JAXP:sum 公司提供的解析器。支持 dom sax
    • DOM4J:比较优秀
    • jsoup:HTML 解析

五、JSON

(一)JSON 的两种类型

1.JS JSON

JavaScript Object Notation(JavaScript 对象标记法)

{

name:"Bill Gates",

age:62,

city:"Seattle"

}

2.Java JSON

{

"name":"Bill Gates",

"age":62,

"city":"Seattle"

}

3.应用场景

  • 传参
  • 接收参数

(二)js json语法规则

1.语法规则

  • 语法规则
    • 数据名称/值
    • 数据由逗号分隔
    • 花括号容纳对象
    • 方括号容纳数组
  • js 对象和 JSON 的对比
    • json
    • json 值类型
      • 字符串
      • 数字
      • 对象(JSON 对象)
      • 数组
      • 布尔
      • null

2.js json类型

  • 字符串

{ "name":"Bill Gates" } ==>解析 let ret = JSON.parse(json);

  • 对象

{ name:"Bill Gates" } ==>解析 let strJson = JSON.stringify(ret);

(三)java 对象和 json 相互转换

1.json介绍(java版)

  • 背景
    • 可以通过json 实现前后端的交互
    • json 的数据格式较小,减少资源消耗
  • 后端需掌握
    • 请求数据:json 字符串提交给后端处理
    • 响应数据:java 对象转换成 json 字符串

2.fastjson的使用

在后端开发中,由于 json 数据格式较小的优势,常用于前后端数据交互的传输载体,但是 json 和 java 对象是两种数据格式,需要转换才能使用,比较优秀的转换框架为阿里的 fastjson 框架.

//java 对象转 json
JSON.toJSONString(obj);
//json 转 java 对象
JSON.parseObject(jsonStr,Person.class)

 往期笔记【文末福利】

近期优质好文,2 篇文章快超过 2k 码友阅读,并超30收藏,非常值得一看。

1.SQL优化七个方向,成体系,非常容易上手,有助于快速定位问题。

SQL优化的7个方向(慢查询从这里排查就好了)-CSDN博客

2.如果 java基础 和 JDBC 学完不知道做什么项目?这套项目非常适合你,附有源码

优势:提前了解分层开发,加深对 java语言的理解,在实战中检验自己,串联知识点~

JDBC 实战项目(增删改查小系统,接近完美!)017-CSDN博客

相关文章:

JavaWeb 学习笔记 XML 和 Json 篇 | 020

今日推荐语 愿你遇见好天气,愿你的征途铺满了星星——圣埃克苏佩里 日期 学习内容 打卡编号2025年01月23日JavaWeb笔记 XML 和 Json 篇020 前言 哈喽&#xff0c;我是菜鸟阿康。 以下是我的学习笔记&#xff0c;既做打卡也做分享&#xff0c;希望对你也有所帮助…...

在Raspbian上,如何获取树莓派的CPU当前频率

本文不用汇编实现&#xff0c;因为我是要用在 Go 里的&#xff0c;Go 并不支持内联汇编&#xff0c;要用汇编比较麻烦。而且项目并不是很在意性能&#xff0c;所以直接用命令获取内核准备好的。 在Raspbian上&#xff0c;CPU 信息存放在/sys/devices/system/cpu/中&#xff0c…...

网络打印机的搜索与连接(一)

介绍 网络打印机就是可以通过网络连接上的打印机&#xff0c;这类打印机分2种&#xff1a;自身具有互联网接入功能可以分配IP的打印机我们称为网络打印机、另外一种就是被某台电脑连接上去后通过共享的方式共享到网络里面的我们称为共享打印机。现在还有一种可以通过互联网连接…...

LangChain + llamaFactory + Qwen2-7b-VL 构建本地RAG问答系统

单纯仅靠LLM会产生误导性的 “幻觉”&#xff0c;训练数据会过时&#xff0c;处理特定知识时效率不高&#xff0c;缺乏专业领域的深度洞察&#xff0c;同时在推理能力上也有所欠缺。 正是在这样的背景下&#xff0c;检索增强生成技术&#xff08;Retrieval-Augmented Generati…...

【自然语言处理(NLP)】介绍、发展史

文章目录 介绍发展史1. 规则驱动时期&#xff08;20世纪50年代-80年代&#xff09;技术特点标志性成果 2. 统计方法兴起&#xff08;1990年代-2000年代&#xff09;技术特点标志性成果 3. 神经网络复兴&#xff08;2010年代初至今&#xff09;技术特点标志性成果 4. 集成与应用…...

1.CSS的三大特性

css有三个非常重要的三个特性&#xff1a;层叠性、继承性、优先级 1.1 层叠性 想通选择器给设置想听的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一个冲突的样式。层叠性主要是解决样式冲突的问题。 <!DOCTYPE html> <html lang"en&…...

【分布式日志篇】从工具选型到实战部署:全面解析日志采集与管理路径

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

基于springcloud汽车信息分析与可视化系统

基于Spring Cloud的汽车信息分析与可视化系统是一款旨在整合、分析汽车相关数据并以直观可视化方式呈现的应用系统。 一、系统架构 该系统基于先进的Spring Cloud架构构建&#xff0c;充分利用其分布式、微服务特性&#xff0c;确保系统具备高可用性、可扩展性和灵活性。Spri…...

TOGAF之架构标准规范-信息系统架构 | 数据架构

TOGAF是工业级的企业架构标准规范&#xff0c;信息系统架构阶段是由数据架构阶段以及应用架构阶段构成&#xff0c;本文主要描述信息系统架构阶段中的数据架构阶段。 如上所示&#xff0c;信息系统架构&#xff08;Information Systems Architectures&#xff09;在TOGAF标准规…...

Databend x 沉浸式翻译 | 基于 Databend Cloud 构建高效低成本的业务数据分析体系

「沉浸式翻译」是一个非常流行的双语对照网页翻译扩展工具&#xff0c;用户可以用它来即时翻译外文网页、PDF 文档、ePub 电子书、字幕等。它不仅可以实现原文加译文实时双语对照显示&#xff0c;还支持 Google、OpenAI、DeepL、微软、Gemini、Claude 等数十家翻译平台服务的自…...

cuda的并行运算介绍

cuda是如何使用GPU并行运算的&#xff1a; 以一个函数为例&#xff1a; duplicateWithKeys << <(P 255) / 256, 256 >> > (P,geomState.means2D,geomState.depths,geomState.point_offsets,binningState.point_list_keys_unsorted,binningState.point_list_…...

「全网最细 + 实战源码案例」设计模式——抽象工厂模式

核心思想 抽象工厂模式是一种创建型设计模式&#xff0c;它提供一个接口&#xff0c;用于创建一系列相关或互相依赖的对象&#xff0c;而无需指定它们的具体类。抽象工厂模式解决了产品族的问题&#xff0c;可以管理和创建一组相关的产品。 结构 1. 抽象工厂 定义创建一些列…...

领域驱动设计(DDD)四 订单管理系统实践步骤

以下是基于 领域驱动设计&#xff08;DDD&#xff09; 的订单管理系统实践步骤&#xff0c;系统功能主要包括订单的创建、更新、查询和状态管理&#xff0c;采用 Spring Boot 框架进行实现。 1. 需求分析 订单管理系统的基本功能&#xff1a; 订单创建&#xff1a;用户下单创…...

leetcode 面试经典 150 题:简化路径

链接简化路径题序号71题型字符串解法栈难度中等熟练度✅✅✅ 题目 给你一个字符串 path &#xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 &#xff08;以 ‘/’ 开头&#xff09;&#xff0c;请你将其转化为 更加简洁的规范路径。 在 Unix 风格的文件系统中规则如下…...

基于 STM32 的智能农业温室控制系统设计

1. 引言 随着农业现代化的发展&#xff0c;智能农业温室控制系统对于提高农作物产量和质量具有重要意义。该系统能够实时监测温室内的环境参数&#xff0c;如温度、湿度、光照强度和土壤湿度等&#xff0c;并根据这些参数自动调节温室设备&#xff0c;如通风扇、加热器、加湿器…...

【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用

前言 &#x1f31f;&#x1f31f;本期讲解关于spring 事务传播机制介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话…...

【Postgres_Python】使用python脚本将多个PG数据库合并为一个PG数据库

需要合并的多个PG数据库表个数和结构一致&#xff0c;这里提供一种思路&#xff0c;选择sql语句insert插入的方式进行&#xff0c;即将其他PG数据库的每个表内容插入到一个PG数据库中完成数据库合并 示例代码说明&#xff1a; 选择一个数据库导出表结构为.sql文件&#xff08…...

Tailwind CSS v4.0 发布

Holy shit its actually done &#xff01; 1 月 22 日&#xff0c;Tailwind CSS 正式发布了 4.0 版本&#xff0c;针对性能和灵活性进行了优化&#xff0c;重新构想了配置和定制体验&#xff0c;并充分利用了 Web 平台提供的最新进展。 新的高性能引擎- 完整构建速度提高 5 …...

pandas基础:文件的读取和写入

文件的读取和写入 读取csv文件 csv文件&#xff1a; name,age,city Alice,25,New York Bob,30,Los Angelesread_csv(filename) header&#xff1a;如 何处理文件的第一行。header0将第一行作为列名&#xff0c;headerNone表示文件中没有列名&#xff0c;所有行都是数据。 im…...

【MySQL — 数据库增删改查操作】深入解析MySQL的create insert 操作

数据库CRUD操作 1 CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作: 2. Create 新增 语法 INSERT [INTO] table_name[(column [&#xff0c;column] ...)] VALUES(value_list)[&#xff0c;(value_list)] ... # value 后面的列的个数和类型&#xff0c;要和表结构匹配…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...