信息标记形式 (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

  1. 标记后的信息可形成信息组织结构,增加了信息维度
  2. 标记的结构与信息一样具有重要价值
  3. 标记后的信息可用于通信、存储或展示
  4. 标记后的信息更利于程序理解和运用

🖥️三种形式

🏷️XML (Extensible Markup Language)

可扩展标记语言_百度百科 (baidu.com)

可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点。

在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。

🔖规范

  1. 文档结构:XML文档由根元素开始,所有其他元素都嵌套在根元素内。

  2. 标签:XML元素由开始标签和结束标签组成,标签名称区分大小写。

  3. 属性:元素可以有属性,属性值必须用引号包围。

  4. 实体引用:XML提供了一些预定义的实体引用,如<代表小于号<>代表大于号>

  5. 注释:注释以<!--开始,以-->结束。

  6. 命名规则:元素名称可以包含字母、数字、下划线和点,但不能以数字或下划线开头。

  7. 空元素:空元素可以用自闭合标签表示,如<element />

  8. 字符数据:元素内容可以包含文本,称为字符数据(CDATA),可以使用<]>来包含特殊字符。

  9. 命名空间:XML支持使用命名空间来避免元素名称冲突。

  10. 文档类型声明: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 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

🔖规范

  1. 数据结构:JSON由键值对组成,键是字符串,值可以是字符串、数字、数组、布尔值或对象。
  2. 键值对:键值对用冒号分隔,键和值用逗号分隔。
  3. 字符串:字符串用双引号包围。
  4. 数字:数字不需要引号。
  5. 布尔值:布尔值为truefalse
  6. 数组:数组由方括号包围,元素可以是字符串、数字、布尔值、数组或对象。
  7. 对象:对象由大括号包围,对象中的键值对由逗号分隔。
  8. 注释:JSON标准不支持注释,但某些解析器可能允许使用特定的语法。
  9. 空值:使用null表示空值。
  10. 转义字符:字符串中使用反斜杠转义特殊字符。

🔖注释

无注释。

🔖举例

{
    "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”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

🔖规范

  1. 缩进:使用空格缩进,通常2或4个空格。
  2. 键值对:键后跟冒号和空格,然后是值。
  3. 列表:以短横线开头,后跟空格。
  4. 字典:键值对,键后跟冒号和空格,值换行。
  5. 注释:以井号开头,注释到行尾。
  6. 多行字符串:使用竖线或大于号。
  7. 引用:使用锚点和别名。
  8. 数据类型:支持字符串、整数、浮点数等。
  9. 引用文件:使用!include
  10. 数据类型转换:使用特定标记指定类型。

🔖注释

#开头的注释。

# 定义一个引用
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

  1. 最早的通用标记语言,可扩展性好,但繁琐
  2. Internet上的信息交互与传递

json

  1. 信息有类型,适合程序处理(js),较xml简介
  2. 移动应用云和节点的信息通信,无注释

yaml

  1. 信息无类型,文本信息比例最高,可读性好
  2. 各类系统的配置文件,有注释易读

END

关注我,学习更多C/C++,算法,计算机知识

B站:

👨‍💻主页:天赐细莲 bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据恢复:手机数据恢复,盘点7个有效手机恢复方法

你知道吗&#xff0c;超过 70% 的智能手机用户都曾有过数据丢失的经历&#xff1f;如果你曾经丢失过手机中的重要文件&#xff0c;别担心&#xff0c;本文有解决办法。在本文中&#xff0c;我们将告诉你如何使用简单的步骤恢复手机中丢失的数据。无论你是不小心删除了文件还是手…

java.lang.NumberFormatException: For input string:

创建SpringBoot&#xff0c;Mybatis的项目时候&#xff0c;Service层调用Mapper层时候爆出了一个错误 发现报错是一个类型转换错误&#xff0c;经过排查后发现是因为mapper接收的实体类中没有写空参构造

Python: 使用pyotp实现OTP一次性密码验证

使用pyotp实现OTP一次性密码验证 OTP的基本原理 生成一个共享秘钥作为随机数的种子服务端通过种子计算出当前的密码客户端也通过相同的种子计算出当前的密码验证客户端生成的密码和服务端生成的密码是否匹配 服务端和客户端计算的方式一样 共享密钥 时间因子 算法 > 密…

吴恩达深度学习笔记:超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter tuning)3.8-3.9

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第三周&#xff1a; 超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架&#xff08;Hyperparameter …

线性插值的频域特性

1、抽取和插值的简单说明 抽取和插值是变采样过程中常用的两种手段&#xff0c;其中抽取的目的是降低数据的采样率&#xff0c;以降低对系统存储深度或计算量的要求。插值的目的是提高数据的采样率&#xff0c;以提高系统的计算精度。 M M M倍抽取通常是通过每隔 M M M…

全球首个AI代理驱动的元宇宙生态Wondra,让Web3再次伟大

前段时间&#xff0c;因为OpenAI的Sora发布、英伟达财报的发布&#xff0c;英伟达市值直逼2.5万亿美金&#xff0c;使得Crypto行业的AI赛道热度飙升&#xff0c;WLD&#xff0c;AGIX&#xff0c;FET等项目都有了不俗的表现。而这几天&#xff0c;因为大盘整体向好&#xff0c;再…

UVa1466/LA4849 String Phone

UVa1466/LA4849 String Phone 题目链接题意分析AC 代码 题目链接 本题是2010年icpc亚洲区域赛大田赛区的G题 题意 平面网格上有n&#xff08;n≤3000&#xff09;个单元格&#xff0c;各代表一个重要的建筑物。为了保证建筑物的安全&#xff0c;警察署给每个建筑物派了一名警察…

Android11 事件分发流程

在Android 11 输入系统之InputDispatcher和应用窗口建立联系一文中介绍到&#xff0c;当InputDispatcher写入数据后&#xff0c;客户端这边就会调用handleEvent方法接收数据 //frameworks\base\core\jni\android_view_InputEventReceiver.cpp int NativeInputEventReceiver::h…

Jmeter 安装教程:简单易懂

随着互联网的不断发展&#xff0c;网站和应用程序的性能测试变得越来越重要。Apache JMeter 是一款广泛使用的性能测试工具&#xff0c;它强大且使用广泛&#xff0c;适用于各种性能测试需求。不论你是刚刚接触性能测试的新手&#xff0c;还是一位有经验的测试工程师&#xff0…

总线带宽(总线系统的数据传送速率)

定义 总线上每秒钟传输的最大字节数或比特数 表示方法 通常使用“比特率”来表示&#xff0c;单位为比特每秒&#xff08;bps&#xff0c;b/s&#xff09;。 计算公式 总线带宽总线宽度/传输周期 其中&#xff0c;总线宽度是指数据总线的位数&#xff08;单位&#xff1a…

scp问题:Permission denied, please try again.

我把scp归纳三种情况&#xff1a; 源端root——》目标端root 源端root——》目标端mysql&#xff08;任意&#xff09;用户 源端&#xff08;任意用户&#xff09;——》目标端root用户 在scp传输文件的时候需要指导目标端的用户密码&#xff0c;如root用户密码、mysql用户…

solidwork3D草图案例-曲管

单位mm 3D草图 点击线&#xff0c;根据三视图&#xff0c;绘制直线&#xff0c; 圆角 半径25mm 扫描 三视图 如果觉得好的话&#xff0c;或者有疑问&#xff0c;请关注微信公众号咨询

RedHat9 | DNS剖析-配置转发DNS服务器

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

Media Encoder 2024 for Mac媒体编码器安装教程ME2024安装包下载

安装 步骤 1&#xff0c;双击打开下载好的安装包。 2&#xff0c;选择install ame_24...双击打开启动安装程序。 3&#xff0c;点击install。 4&#xff0c;输入电脑密码。 5&#xff0c;软件安装中... 6&#xff0c;安装结束点击好。 7&#xff0c;返回打开的镜像 选择激活补…

品牌建设不迷路:系统化方法让品牌成长更高效

很多创始人才创业过程中都会发现&#xff1a; 企业越大&#xff0c;遇到的系统性的底层品牌问题就会越多&#xff0c;品牌的系统化建设底层根基如果不稳&#xff0c;后续的增长也会摇摇欲坠。 所以在当今竞争激烈的市场环境中&#xff0c;品牌的成功不仅仅依靠一个响亮的名字…

LeetCode/NowCoder-链表经典算法OJ练习4

人的才华就如海绵的水&#xff0c;没有外力的挤压&#xff0c;它是绝对流不出来的。流出来后&#xff0c;海绵才能吸收新的源泉。&#x1f493;&#x1f493;&#x1f493; 目录 说在前面 题目一&#xff1a;环形链表 题目二&#xff1a;环形链表 II 题目三&#xff1a;随机…

lammps案例:reaxff势模拟Fe(OH)3高温反应过程

大家好&#xff0c;我是小马老师。 本文分享一个reaxff反应势的案例。 该案例主要模拟Fe(OH)3在高温下的反应过程&#xff0c;主要代码来自lammps自带的案例。 lammps自带案例没有产物输出&#xff0c;故在此基础上稍加修改&#xff0c;增加了产物输出命令。 反应过程如下图…

算法题目记录

1.最短距离 题目简化&#xff1a; 明确问题 算法提示&#xff1a; 1.如何判断同类之间的最短距离为0 ---> 并查集路径压缩 2.如何存储任意两类的距离 ---> 邻接矩阵存储无向图 3.如何表示每个点属于哪一类 ---> 用数组id[节点]存储属于哪一类 4.如何算出任意两类…

C语言中的位段

位段是通过结构体实现的&#xff0c;可以在一定程度上减小空间浪费&#xff0c;位段的声明和结构体类似&#xff0c;有以下几个不同&#xff1a; ①位段的成员必须是整形&#xff08;int,char,short等&#xff09;。 ②成员后边有冒号和数字&#xff0c;表示该成员占几个bit位…

QA测试开发工程师面试题满分问答24: 用过哪些消息队列,各自的特点和优缺点是什么,结合项目实际说一说

回答思路 回答开头: 首先表达我对这个问题的认真态度,并表示我将根据自己的项目实践经验来回答。 列举使用过的消息队列: 根据我参与过的项目经验,我使用过以下几种主流的消息队列: RabbitMQApache KafkaRedis 的 pub/sub 功能 分别介绍各消息队列的特点: RabbitMQ: 特点: 基于…