JavaWeb 学习笔记 XML 和 Json 篇 | 020

news2025/1/24 10:52:09

今日推荐语

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

日期        学习内容        打卡编号
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博客

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

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

相关文章

【力扣:新动计划,编程入门 —— 题解 ②】

—— 25.1.23 1512. 好数对的数目 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] nums[j] 且 i < j &#xff0c;就可以认为这是一组 好数对 。 返回好数对的数目。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1,1,3] 输出&#xff1a;4 解释&#xff…

如何在data.table中处理缺失值

&#x1f4ca;&#x1f4bb;【R语言进阶】轻松搞定缺失值&#xff0c;让数据清洗更高效&#xff01; &#x1f44b; 大家好呀&#xff01;今天我要和大家分享一个超实用的R语言技巧——如何在data.table中处理缺失值&#xff0c;并且提供了一个自定义函数calculate_missing_va…

《RWA全球产业白皮书》发布:向凌云教授解析全球经济转型与RWA的未来

2025年1月16日&#xff0c;旅美经济学家、全球新兴产业金融专家向凌云教授在美国发布了引人注目的《RWA全球产业白皮书》。该白皮书通过深入分析全球产业结构变化&#xff0c;尤其强调了“真实世界资产”&#xff08;Real-World Assets&#xff0c;简称RWA&#xff09;在当前及…

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

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

安宝特方案 | AR在供应链管理中的应用:提升效率与透明度

随着全球化的不断深入和市场需求的快速变化&#xff0c;企业对供应链管理的要求也日益提高。如何在复杂的供应链环境中提升效率、降低成本&#xff0c;并确保信息的透明度&#xff0c;成为了各大行业亟待解决的问题。而增强现实&#xff08;AR&#xff09;技术&#xff0c;特别…

C语言数组详解:从基础到进阶的全面解析

在C语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储多个相同类型的数据。数组的引入使得C语言能够高效地存储和操作大量数据。在任何一个C语言程序中&#xff0c;数组都发挥着极其重要的作用。无论是在算法实现、数据存储、还是在复杂程序的设计中&#xff0c…

阴沟翻船题——Longest Substring Without Repeating Characters

一、事件概述 今天接到一个面试&#xff0c;让线上做题。面试官出了个leetcode的题。题目如图所示&#xff1a; 我没有刷过leetcode&#xff0c;上学时候我们做的hdu-acm和codeforces。咋一接到题目&#xff0c;看到是个字符串题&#xff0c;并且找最长字串&#xff0c;第一反…

ssm基于HTML5的红酒信息分享系统

SSM基于HTML5的红酒信息分享系统是一个专注于红酒领域的综合性信息平台&#xff0c;旨在为红酒爱好者、从业者以及普通消费者提供一个便捷的交流与获取红酒相关信息的空间。 一、系统背景与意义 随着人们生活水平的提高和消费观念的转变&#xff0c;红酒作为一种高雅的饮品&a…

【FFmpeg】FLV 格式分析 ③ ( Tag Body 数据块体结构 - Vedio Data 视频数据 )

文章目录 一、Tag Body 数据块体结构 - Video Data 视频数据1、Vedio Data 视频数据 类型标识2、Vedio Data 视频数据 结构分析3、Composition Time Offset 字段涉及的时间计算4、AVC Packet Type 字段说明① AVC Sequence Header 类型② AVC NALU 类型③ AVC End of Sequence …

解决docker: ‘buildx‘ is not a docker command.

简介 buildx 是 Docker 官方提供的一个构建工具&#xff0c;它可以帮助用户快速、高效地构建 Docker 镜像&#xff0c;并支持多种平台的构建。使用 buildx&#xff0c;用户可以在单个命令中构建多种架构的镜像&#xff0c;例如 x86 和 ARM 架构&#xff0c;而无需手动操作多个…

Centos类型服务器等保测评整/etc/pam.d/system-auth

修改服务器配置文件/etc/pam.d/system-auth&#xff0c;但是&#xff0c;把一下配置放在password的配置第一行才会生效 执行命令&#xff1a;配置口令要求&#xff1a;大小写字母、数字、特殊字符组合、至少8位&#xff0c;包括强制设置root口令&#xff01; sed -i 14a pas…

精准捕捉,智能训练:数据手套在机器人灵巧手领域的应用探索

数据手套是一种内置多个高精度传感器&#xff0c;能够精准捕捉手部动作数据&#xff0c;并将其转化为数字信号的高科技穿戴设备。 MHand pro动捕数据手套其内置16个高精度传感器&#xff0c;能敏锐感知手指的弯曲、伸展等动作。这些传感器通过复杂的算法&#xff0c;将手部动作…

FPGA实现任意角度视频旋转(二)视频90度/270度无裁剪旋转

本文主要介绍如何基于FPGA实现视频的90度/270度无裁剪旋转&#xff0c;关于视频180度实时旋转&#xff0c;请见本专栏前面的文章&#xff0c;旋转效果示意图如下&#xff1a; 为了实时对比旋转效果&#xff0c;采用分屏显示进行处理&#xff0c;左边代表旋转前的视频在屏幕中…

PHP如何封装项目框架达到高可用、高性能、高并发

很多初创公司为了快速上线业务&#xff0c;开发时间由本来的6个月压缩到3个月甚至2个月。开发人员只能根据时间及业务需求去git上找现有的项目二次开发或者是一个空框架根据业务一点一点的去做&#xff0c;上述两种方案虽然也可以上线但是对于业务本身存在的问题也是很大的&…

Java设计模式—观察者模式

观察者模式 目录 观察者模式1、什么是观察者模式&#xff1f;2、观察者模式优缺点及注意事项&#xff1f;3、观察者模式实现&#xff1f;4、手写线程安全的观察者模式&#xff1f; 1、什么是观察者模式&#xff1f; - 实例&#xff1a;现实生活中很多事物都是依赖存在的&#x…

DAY9,递归实现计算 :1 + 1/3 - 1/5 + 1/7 - 1/9 + .... 1/n 的值

题目 用递归实现计算 :1 1/3 - 1/5 1/7 - 1/9 .... 1/n 的值&#xff0c;n通过键盘输入 思路 递进阶段&#xff1a;n、...... 、9、7、5、3、1 函数出口&#xff1a;递进到1 开始返回&#xff1b;函数返回值视为“总和” 回归阶段&#xff1a;对当前n取倒数&#xff1b;“总…

【数据结构进阶】红黑树超详解 + 实现(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;数据结构 目录 前言 一、红黑树介绍 二、红黑树原理详解 三、红黑树的实现 1. 节点定义 2. 红黑树类型定义及接口声明 3. 红黑树的插入&#xff08;重点&a…

微服务与docker

准备工作 在课前资料中给大家提供了黑马商城项目的资料,我们需要先导入这个单体项目。不过需要注意的是,本篇及后续的微服务学习都是基于Centos7系统下的Docker部署,因此你必须做好一些准备: Centos7的环境及一个好用的SSH客户端装好Docker会使用Docker如果是学习过上面Doc…

H3C-无线WLAN配置案例(二层隧道转发)

目录 1.无线wlan产生背景:2.网络拓扑:3.网络简述:4.网络配置:4.1 网络基础配置4.2 无线wlan二层隧道转发配置4.3 无线wlan验证: 1.无线wlan产生背景: 无线WLAN&#xff08;无线局域网&#xff09;的产生背景主要源于以下几个方面的需求和技术发展&#xff1a;移动性和便捷性需…

Unreal Engine 5 C++ Advanced Action RPG 十一章笔记

第十一章 In Game Widgets 本章节就是做UI2-Template Button Widget 这章节创建不同的UI 结束UI胜利UI暂停菜单主菜单加载UI新建一个按钮小组件作为模版 3-Pause Menu Template Button 继续做更多模版UI 4-Lose Screen(游戏失败UI) 做失败的UI 之前按钮模版的调度程序就在这起…