信息标记形式 (XML, JSON, YAML)
文章目录
- 🖥️介绍
- 🖥️三种形式
- 🏷️XML (Extensible Markup Language)
- 🔖规范
- 🔖注释
- 🔖举例
- 🔖其他
- 🏷️JSON (JavaScript Object Notation)
- 🔖规范
- 🔖注释
- 🔖举例
- 🏷️YAML (YAML Ain't a Markup Language)
- 🔖规范
- 🔖注释
- 🔖举例
- 🖥️比较
- END
🖥️介绍
ref: Python网络爬虫与信息提取_北京理工大学_中国大学MOOC(慕课) 单元5
信息标记形式是当今网络世界中非常重要的一部分。目前主要被大众认可的有三类。xml,json,yaml。
- 标记后的信息可形成信息组织结构,增加了信息维度
- 标记的结构与信息一样具有重要价值
- 标记后的信息可用于通信、存储或展示
- 标记后的信息更利于程序理解和运用
🖥️三种形式
🏷️XML (Extensible Markup Language)
可扩展标记语言_百度百科 (baidu.com)
可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点。
在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
🔖规范
-
文档结构:XML文档由根元素开始,所有其他元素都嵌套在根元素内。
-
标签:XML元素由开始标签和结束标签组成,标签名称区分大小写。
-
属性:元素可以有属性,属性值必须用引号包围。
-
实体引用:XML提供了一些预定义的实体引用,如
<代表小于号<,>代表大于号>。 -
注释:注释以
<!--开始,以-->结束。 -
命名规则:元素名称可以包含字母、数字、下划线和点,但不能以数字或下划线开头。
-
空元素:空元素可以用自闭合标签表示,如
<element />。 -
字符数据:元素内容可以包含文本,称为字符数据(CDATA),可以使用
<]>来包含特殊字符。 -
命名空间:XML支持使用命名空间来避免元素名称冲突。
-
文档类型声明:XML文档可以包含一个文档类型声明(DOCTYPE),用于指定文档的结构。
<?xml version="1.0" encoding="utf-8"?>
🔖注释
<root><!-- 这是一个注释,它不会影响XML文档的结构 --><element attribute="value">内容</element><!-- 这是另一个注释 -->
</root>
🔖举例
<?xml version="1.0" encoding="UTF-8" ?>
<name>cuber-lotus</name>
<age>114514</age>
<bilibili><id>天赐细莲</id><url>https://space.bilibili.com/8172252</url>
</bilibili>
<language>c</language>
<language>cpp</language>
<language>python</language>
<language>golang</language>
<language>javascript</language>
<language>java</language>
<girlfriend />
🔖其他
XML与HTML区别
(1)可扩展性方面:HTML不允许用户自行定义自己的标识或属性,而在XML中,用户能够根据需要自行定义新的标识及属性名,以便更好地从语义上修饰数据。
(2)结构性方面:HTML不支持深层的结构描述,XML的文件结构嵌套可以复杂到任意程度,能表示面向对象的等级层次。
(3)可校验性方面:HTML没有提供规范文件以支持应用软件对HTML文件进行结构校验,而XML文件可以包括一个语法描述,使应用程序可以对此文件进行结构校验。
(4)可以通过将html文件转换为符合xml标准的xhtml文件,实现html标准和xml标准的结合。
🏷️JSON (JavaScript Object Notation)
JSON_百度百科 (baidu.com)
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
🔖规范
- 数据结构:JSON由键值对组成,键是字符串,值可以是字符串、数字、数组、布尔值或对象。
- 键值对:键值对用冒号分隔,键和值用逗号分隔。
- 字符串:字符串用双引号包围。
- 数字:数字不需要引号。
- 布尔值:布尔值为
true或false。 - 数组:数组由方括号包围,元素可以是字符串、数字、布尔值、数组或对象。
- 对象:对象由大括号包围,对象中的键值对由逗号分隔。
- 注释:JSON标准不支持注释,但某些解析器可能允许使用特定的语法。
- 空值:使用
null表示空值。 - 转义字符:字符串中使用反斜杠转义特殊字符。
🔖注释
无注释。
🔖举例
{"name": "cuber-lotus","age": 114514,"bilibili": {"id": "天赐细莲","url": "https://space.bilibili.com/8172252"},"language": ["c","cpp","python","golang","javascript","java"],"girlfriend": null
}
🏷️YAML (YAML Ain’t a Markup Language)
The Official YAML Web Site
YAML_百度百科 (baidu.com)
YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。
YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
🔖规范
- 缩进:使用空格缩进,通常2或4个空格。
- 键值对:键后跟冒号和空格,然后是值。
- 列表:以短横线开头,后跟空格。
- 字典:键值对,键后跟冒号和空格,值换行。
- 注释:以井号开头,注释到行尾。
- 多行字符串:使用竖线或大于号。
- 引用:使用锚点和别名。
- 数据类型:支持字符串、整数、浮点数等。
- 引用文件:使用
!include。 - 数据类型转换:使用特定标记指定类型。
🔖注释
以#开头的注释。
# 定义一个引用
reference: &ref_name # 这是引用的注释name: John Doe # 这是引用内容的注释
🔖举例
name: cuber-lotus
age: 114514
bilibili:id: 天赐细莲url: 'https://space.bilibili.com/8172252'
language:- c- cpp- python- golang- javascript- java
girlfriend: null
🖥️比较
xml
- 最早的通用标记语言,可扩展性好,但繁琐
- Internet上的信息交互与传递
json
- 信息有类型,适合程序处理(js),较xml简介
- 移动应用云和节点的信息通信,无注释
yaml
- 信息无类型,文本信息比例最高,可读性好
- 各类系统的配置文件,有注释易读
END
关注我,学习更多C/C++,算法,计算机知识
B站:
👨💻主页:天赐细莲 bilibili
![]()
相关文章:
信息标记形式 (XML, JSON, YAML)
文章目录 🖥️介绍🖥️三种形式🏷️XML (Extensible Markup Language)🔖规范🔖注释🔖举例🔖其他 🏷️JSON (JavaScript Object Notation)🔖规范🔖注释&#x…...
C语言:学生成绩管理系统(含源代码)
一.功能 二.源代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NUM 100 typedef struct {char no[30];char name[10];char sex[10];char phone[20];float cyuyan;float computer;float datastruct; } *student, student1;typ…...
MySQL 导出导入的101个坑
最近接到一个业务自行运维的MySQL库迁移至标准化环境的需求,库不大,迁移方式也很简单,由开发用myqldump导出数据、DBA导入,但迁移过程坎坷十足,记录一下遇到的各项报错及后续迁移注意事项。 一、 概要 空间问题源与目…...
OpenCv之简单的人脸识别项目(人脸提取页面)
人脸识别 准备五、人脸提取页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.定义单人脸提取脚本4.定义多人脸提取脚本5.创建一个退出对话框6.按钮设计6.1单人脸提取按钮6.2多人脸提取按钮6.3返回按钮 7.定义关键函数8…...
linux 内核映像差异介绍:vmlinux、zImage、zbImage、image、uImage等
一、背景 Linux内核是整个Linux操作系统的核心部分,它是一个负责与硬件直接交互的软件层,并且提供多种服务和接口,让用户程序能够方便地使用硬件资源。 当我们编译自定义内核时,可以将其生成为以下内核映像之一:vmli…...
【Linux-INPUT输入的子系统】
Linux-INPUT输入的子系统 ■ input 子系统简介■ input 驱动编写流程■ 事件类型 ■ ■ input 子系统简介 input 子系统就是管理输入的子系统, input 子系统分为 input 驱动层、 input 核心层、 input 事件处理层,最终给用户空间提供可访问的设备节点 …...
密码加密及验证
目录 为什么需要加密? 密码算法分类 对称密码算法 非对称密码算法 摘要算法 DigestUtils MD5在线解密工具原理 实现用户密码加密 代码实现 为什么需要加密? 在MySQL数据库中,我们常常需要对用户密码、身份证号、手机号码等敏感信息进…...
找出字符串中出现最多次数的字符以及出现的次数
str.charAt(i) 是JavaScript中获取字符串中特定位置字符的方法,表示获取当前的字符。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…...
如何看待央行买卖长期国债?
央行远比大家想象中的要渴求货币宽松。 引子 今年以来,有不少关于“央行买卖长期国债”的讨论,前些时候关注点在“买”,最近关注点在“卖”。 然而,市场上的讨论采用了十分粗糙和松散的“自然语言”,所以࿰…...
MATLAB算法实战应用案例精讲-【数模应用】Turf组合模型(附MATLAB、python和R语言代码实现)
目录 几个高频面试题目 如何以最小的成本覆盖到最大的消费群体? 应用场景 TURF举例...
android源码下载编译模拟器运行
安卓aosp源码下载,编译,模拟器运行 virtualbox7 安装ubuntu20.04,ubuntu22.04 编译android aosp 源码可以,但是模拟器跑不了,哪个版本都是要么黑屏,要么整个vbox虚拟机闪退。解决方案使用vmware17 ##拯救…...
Golang:Sirupsen/logrus是一个日志库
Sirupsen/logrus是一个日志库 文档 https://github.com/Sirupsen/logrus 安装 go get github.com/sirupsen/logrus代码示例 package mainimport ("github.com/sirupsen/logrus" )func main() {var log logrus.New()log.Trace("Something very low level.&…...
Android Studio插件开发 - Dora SDK的IDE插件
IDE插件开发简介 Android Studio是一种常用的集成开发环境(IDE),用于开发Android应用程序。它提供了许多功能和工具,可以帮助开发人员更轻松地构建和调试Android应用程序。 如果你想开发Android Studio插件,以下是一…...
【mybatis】缓存
一级缓存和二级缓存 一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从一级缓存中直接获取,不会从数据库重新查询。一级缓存默认是开启 使一级缓存失效的四种情况: 11.1…...
自定义类型:结构体类型
在学习完指针相关的知识后将进入到c语言中又一大重点——自定义类型,在之前学习操作符以及指针时我们对自定义类型中的结构体类型有了初步的了解,学习了结构体类型的创建以及如何创建结构体变量,还有结构体成员操作符的使用,现在我…...
C++对象移动
在某些情况下,对象拷贝后就立即被销毁了,这时利用新标准(C11)提供的对象移动而非拷贝将大幅提升性能. 1.右值引用 为了支持移动操作,c11新增了一种引用 - 右值引用(rvalue reference)。这种引用必须指向右值,使用&&声明。 右值引用只能引用临时变量或常量值. 右值引用…...
“华为杯”第十三届中国研究生 数学建模竞赛-E题:粮食最低收购价政策问题研究(续)
目录 4.3 问题三:粮食价格的特殊规律性模型 4.3.1 分析和建模 4.3.2 求解和结果...
(一)django目录介绍
1、生成django项目,得到的目录如下 manage.py:命令行工具,内置多种方式与项目进行交互。在命令提示符窗口下,将路径切换到项目并输入python manage.py help,可以查看该工具的指令信息。 默认的数据库工具,sqlite 在…...
leetcode5 最长回文子串
给你一个字符串 s,找到 s 中最长的 回文 子串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输入:s "cbbd" 输…...
《论文阅读》通过顺序不敏感的表示正则化实现稳健的个性化对话生成 ACL 2023
《论文阅读》通过顺序不敏感的表示正则化实现稳健的个性化对话生成 ACL 2023 前言 相关个性化生成论文推荐简介问题定义方法损失函数实验结果 前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手…...
Nunchaku FLUX.1 CustomV3问题解决:提示词怎么写?参数怎么调?一篇搞定
Nunchaku FLUX.1 CustomV3问题解决:提示词怎么写?参数怎么调?一篇搞定 你是不是也遇到过这种情况:兴冲冲地打开了Nunchaku FLUX.1 CustomV3,想生成一张美美的吉卜力风格插画,结果出来的图片要么“货不对板…...
Llama-3.2V-11B-cot真实案例展示:OCR后图像逻辑推理生成可验证结论
Llama-3.2V-11B-cot真实案例展示:OCR后图像逻辑推理生成可验证结论 1. 模型能力概览 Llama-3.2V-11B-cot是一个突破性的视觉语言模型,它不仅能理解图像内容,还能进行系统性推理并生成可验证的结论。这个基于LLaVA-CoT论文实现的模型&#x…...
vLLM-v0.17.1GPU优化:显存碎片率<5%的PagedAttention内存管理实录
vLLM-v0.17.1 GPU优化:显存碎片率<5%的PagedAttention内存管理实录 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已经发展成为一个由学术界和工业界共同…...
Cesium 三维地图开发实战:主流在线底图(天地图、高德、百度等)的集成与坐标纠偏方案
1. 三维地图开发中的底图选择困境 第一次用Cesium加载国内在线地图时,我被满屏错位的道路和建筑搞懵了。明明在二维地图里精准对齐的学校操场,在三维场景里却飘到了隔壁小区。这种"灵魂出窍"般的偏移现象,其实是不同坐标系之间的&q…...
突破工厂建设瓶颈:FactoryBluePrints蓝图库带来的自动化生产革命
突破工厂建设瓶颈:FactoryBluePrints蓝图库带来的自动化生产革命 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是戴森球计划的开源工厂蓝图…...
终极指南:用30亿参数Qwen2.5-VL-3B解锁企业级视觉语言能力
终极指南:用30亿参数Qwen2.5-VL-3B解锁企业级视觉语言能力 【免费下载链接】Qwen2.5-VL-3B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen2.5-VL-3B-Instruct 你是否曾被大型视觉语言模型的高昂部署成本所困扰?是否因为硬件限…...
终极指南:如何将Squire富文本编辑器与现代前端工具链完美集成
终极指南:如何将Squire富文本编辑器与现代前端工具链完美集成 【免费下载链接】Squire The rich text editor for arbitrary HTML. 项目地址: https://gitcode.com/gh_mirrors/sq/Squire Squire是一个轻量级、高性能的HTML5富文本编辑器,专为处理…...
如何用anyRTC-RTMP-OpenSource打造个性化直播数据源:自定义视频采集完整指南
如何用anyRTC-RTMP-OpenSource打造个性化直播数据源:自定义视频采集完整指南 【免费下载链接】anyRTC-RTMP-OpenSource RTMP 推流器,RTMP(HLS)秒开播放器,直播点播,跨平台(Win,IOS,Android)开源代码 项目…...
舰艇推进电机供电流程优化方案
舰艇推进电机供电流程优化方案 第一章 绪论 1.1 背景与意义 现代舰艇(如驱逐舰、潜艇、全电推进船舶)广泛采用综合电力系统。传统的供电流程中,推进电机作为最大的非线性负载,其负载突变(如急加速、倒车、波浪冲击导致的螺旋桨甩尾)会通过直流母线回馈至发电机组,导致…...
五款颠覆传统的嵌入式电路仿真工具:从移动端到PC端的创新体验
1. 移动端电路仿真工具的崛起与创新 十年前我第一次接触电路仿真时,还需要背着厚重的笔记本电脑到处跑。现在掏出手机就能完成80%的基础仿真需求,这种变化简直像从DOS时代直接跳到了智能手机时代。移动端仿真工具最大的优势就是随时随地验证灵感——等公…...
