文章目录
🖥️介绍
ref: Python网络爬虫与信息提取_北京理工大学_中国大学MOOC(慕课) 单元5
信息标记形式是当今网络世界中非常重要的一部分。目前主要被大众认可的有三类。xml
,json
,yaml
。
- 标记后的信息可形成信息组织结构,增加了信息维度
- 标记的结构与信息一样具有重要价值
- 标记后的信息可用于通信、存储或展示
- 标记后的信息更利于程序理解和运用
🖥️三种形式
🏷️XML (Extensible Markup Language)
可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点。
在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
🔖规范
-
文档结构:XML文档由根元素开始,所有其他元素都嵌套在根元素内。
-
标签:XML元素由开始标签和结束标签组成,标签名称区分大小写。
-
属性:元素可以有属性,属性值必须用引号包围。
-
实体引用 :XML提供了一些预定义的实体引用,如
<
代表小于号<
,>
代表大于号>
。 -
注释 :注释以
<!--
开始,以-->
结束。 -
命名规则:元素名称可以包含字母、数字、下划线和点,但不能以数字或下划线开头。
-
空元素 :空元素可以用自闭合标签表示,如
<element />
。 -
字符数据 :元素内容可以包含文本,称为字符数据(CDATA),可以使用
<]>
来包含特殊字符。 -
命名空间:XML支持使用命名空间来避免元素名称冲突。
-
文档类型声明:XML文档可以包含一个文档类型声明(DOCTYPE),用于指定文档的结构。
xml
<?xml version="1.0" encoding="utf-8"?>
🔖注释
xml
<root>
<!-- 这是一个注释,它不会影响XML文档的结构 -->
<element attribute="value">内容</element>
<!-- 这是另一个注释 -->
</root>
🔖举例
xml
<?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(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
🔖规范
- 数据结构:JSON由键值对组成,键是字符串,值可以是字符串、数字、数组、布尔值或对象。
- 键值对:键值对用冒号分隔,键和值用逗号分隔。
- 字符串:字符串用双引号包围。
- 数字:数字不需要引号。
- 布尔值 :布尔值为
true
或false
。 - 数组:数组由方括号包围,元素可以是字符串、数字、布尔值、数组或对象。
- 对象:对象由大括号包围,对象中的键值对由逗号分隔。
- 注释:JSON标准不支持注释,但某些解析器可能允许使用特定的语法。
- 空值 :使用
null
表示空值。 - 转义字符:字符串中使用反斜杠转义特殊字符。
🔖注释
无注释。
🔖举例
json
{
"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
。 - 数据类型转换:使用特定标记指定类型。
🔖注释
以#
开头的注释。
yaml
# 定义一个引用
reference: &ref_name # 这是引用的注释
name: John Doe # 这是引用内容的注释
🔖举例
yaml
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