一·什么是XML?
XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。
--XML是自我描述的,意味着数据本身包含了描述数据结构和语义的信息。
--XML支持复杂的数据结构,可以定义自己的标签,非常适合于文档的长期存储。
--XML文件格式是纯文本格式
--XML的简单易于在任何应用程序中读/写数据,这使XML很快成为数据交换语言(此类语言主要包括XML,JSON等,常用于接口调用,配置文件,数据存储等场景。
二·XML的语法规则
1.必须要由声明语句:
用于指明XML版本和编码
<?xml version="1.0" encoding="UTF-8"?>
2.区分大小写
XML需要进行大小写区别,大写字母A和小写字母a是不同的标记。
3.根元素:
紧接着后面声明建立的第一个元素,其他元素都是这个根元素的子元素
XML只有一个根元素,它必须包含所有其他元素。
根元素必须正确闭合,开始标签和结束标签需要匹配。
根元素的起始标记要放在所有其他元素的起始标记之前;根元素的结束标记要放在所有其他元素的结束标记之后。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title>Example Book</title>
<author>John Doe</author>
<price>29.99</price>
</book>
<book>
<title>Another Book</title>
<author>Jane Smith</author>
<price>19.99</price>
</book>
</bookstore>
<bookstore> 是根元素,它包含了所有的<book>子元素。
每个<book>元素代表一本书,并且包含<title>、<author>和<price>子元素,这些子元素包含了书的标题、作者和价格信息。
根元素<bookstore>正确地包含了所有的内容,并且是文档中唯一的最顶层元素。
开始标签:<title> 定义了 title 元素的开始。
结束标签:</title> 定义了 title 元素的结束。
4.属性值使用引号:
在 XML 中,属性值必须被引号包裹,这是 XML 规范的一部分。使用引号的目的是为了区分属性值的开始和结束。XML 支持两种类型的引号来包裹属性值:单引号(')和双引号(")。
<element attribute="value" />
<element attribute='value' />
5.特殊字符:
某些特殊字符(如`<`、`>`、`&`、`'`和`"`)必须使用预定义的实体引用(如`<`、`>`、`&`、`&apos`和`"`)或字符引用来表示。
小于号 <:用于标记元素的开始。
-实体引用:<
大于号 >:用于标记元素的结束。
-实体引用:>
和号 &:用于引入实体引用。
-实体引用:&
双引号:" , 用于属性值的定界符。
-实体引用:"
单引号:' ,
-实体引用:'
6.标签嵌套:
元素标签可以嵌套,形成层次结构,但必须正确闭合,避免重叠或嵌套错误。
<school>
<class id="1A">
<teacher>王老师</teacher>
<student id="1">
<name>小明</name>
<age>12</age>
</student>
<student id="2">
<name>小红</name>
<age>11</age>
</student>
</class>
<class id="1B">
<teacher>李老师</teacher>
<student id="1">
<name>小刚</name>
<age>12</age>
</student>
<student id="2">
<name>小芳</name>
<age>12</age>
</student>
</class>
</school>
<school> 是根元素,包含了学校中的所有班级。
每个 <class> 元素代表一个班级,并且包含了 <teacher> 和多个 <student> 子元素。
每个 <student> 元素包含了 <name> 和 <age> 子元素,描述了学生的名字和年龄。
7.空元素:
表示存在。可以用来表示某个实体或属性的存在,即使没有具体的数据或子元素需要包含。
<meeting>
<room>101</room>
<participants>
<participant>Alice</participant>
<participant>Bob</participant>
</participants>
<audio-visual-equipment>
<projector/>
<screen/>
</audio-visual-equipment>
<refreshments/>
</meeting>
<projector/> 和 <screen/> 是空元素,表示会议室预订时包括了投影仪和屏幕,但不需要进一步指定详细信息。
<refreshments/> 也是一个空元素,可能表示预订时包括了茶点或小吃,但具体内容未指定。
三·JSON和XML对比。
JSON与XML的比较:
可读性:JSON的格式更简洁,更易于机器处理、阅读和编写。XML则较为冗长,包含更多的标记。但是XML适合人类阅读
解析难易:解析 XML 可能比解析 JSON 复杂,因为 XML 解析器需要处理标签、属性和可能的命名空间。解析 JSON 通常更简单,因为它的结构更简单,大多数编程语言都有内置的 JSON 解析器。
数据结构:JSON的结构更接近于编程语言中的字典或对象,而XML则更像是一种标记语言。
扩展性:XML可以通过定义自己的标签来扩展,适合复杂的数据结构。JSON则更简单,但扩展性不如XML。
用途:JSON常用于Web开发中的API和轻量级的数据交换。XML则常用于配置文件、文档存储和企业级的数据交换。
例子对比:
XML:
<book>
<title>python基础</title>
<author>张三</author>
<year>2021</year>
<price>45.00</price>
</book>
JSON:
{
"title": "python基础",
"author": "张三",
"year": 2021,
"price": 45.00
}