XML 和 JSON
XML
简介
可扩展标记语言(extensible Markup language).
特性:
- xml 具有平台无关性,是一门独立的标记语言.
- xml 具有自我描述性
为什么要学习XML?
- 网络 数据传输
- 数据存储
- 配置文件
XML 文件
.xml 文件是保存xml数据的一种方式
xml数据也可以是其他方式存在(如在内存中构建xml数据)
不要将xml 语言狭义的理解成xml文件。
一、XML 语法
xml 文档声明
<?xml version="1.0" encoding="UTF-8"?>标记(元素/标签/节点 )
xml 文档,是由一个个的标记组成
语法:
开始标记(开放标记): <标记名称>
结束标记(闭合标记):</标记名称>
标记名称:自定义名称必须遵循一下命名规则。
名称可以含 数字、字母以及其他字符
名称不能以数字或标点符号开始
名称不能以字符"xml 或者 Xml 或者 XML"开始
名称不能包含 空格,不能包含 冒号
名称区分大小写
标记内容: 开始标记和结束标记之间,是标记的内容。
例如:我们通过标记描述一个人名
<name>迈克尔斯科菲尔der</name>
一个XML文档中,必须有且仅允许一个根标记
- 正例:
<names>
<name>魔术师罗宾逊</name>
<name>迈克尔斯科菲尔der</name>
</names>
- 反例:
<name>魔术师罗宾逊</name>
<name>迈克尔斯科菲尔der</name>
标记可以被嵌套,但是不允许有交叉
- 正例:
<person>
<name>老四</name>
<age>18</age>
</person>
反例:
<person>
<name>赵高<age></name>
34</age>
</person>
标记的层级称呼 (子标记、父标记、兄弟标记、后代标记、祖先标记)
例如:
<persons>
<person>
<name>赵高</name>
<length>180</length>
</person>
<person>
<name>李斯</name>
<length>180</length>
</person>
</persons>
name 是person 的子标记,也是person的后代标记
name 是persons 的后代标记,
name 是length的兄弟标记
person 是 name 的父标记
persons 是 name 的祖先标记
标记名称 允许重复
标记除了开始和结束,还有属性
标记中的属性,在标记开始时 描述,有属性名和属性值 组成。
格式:
再开始标记中,描述属性。
可以包含0-n个属性,每个属性都是一个键值对!
属性名不可以重复,键与值之间使用等号连接,多个属性之间使用空格分割。
属性值,必须被引号引住。
案例:
<persons>
<person id=“1001” groupid=“1”>
<name>赵高</name>
<age>18</age>
</person>
</persons>
注释
注释不能写在 文档声明 (即 第1条) 前
注释不能嵌套注释
格式:
注释开始:<!–
注释结束:–>
语法进阶 CDATA
CDATA
CDATA 是不应该由XML解析器解析的文本数据。
像"<" 和"&" 字符在XML 元素中都是非法的。
“<” 会产生错误,因为解析器会把该字符解析为新元素的开始
"&"会产生错误,因为解析器会吧该字符解析为字符实体的开始
某些文本,比如 JavaScript 代码,包含大量"<" 或 "&"字符。为了避免错误,可以将脚本代码定义为CDATA。
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由
“<![CDATA[" 开始,由 "]]>” 结束。
<name><![CDATA [哈哈哈 <a></a> 哈哈]]></name>