XML
xml:(extensible markup language)可扩展标记语言,是一种数据表示格式,可描述复杂的数据结构,常用语传输和存储数据。
例子:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE note SYSTEM "book.dtd">
<book id="1">
<name>Java核心技术</name>
<author>Cay S. Horstmann</author>
<isbn lang="CN">1234567</isbn>
<tags>
<tag>Java</tag>
<tag>Network</tag>
</tags>
<pubDate/>
</book>
xml的特点
- 纯文本,默认UTF-8。
- 可嵌套,适合表示结构化数据。
xml的结构
- xml结构固定,首行必定是<?xml version="1.0"?>可以加上可选的编码。
- 紧接着,如果以类似
<!DOCTYPE note SYSTEM "book.dtd">
声明的是文档定义类型(DTD:Document Type Definition),DTD是可选的。 - 接下来是XML的文档内容,一个XML文档有且仅有一个根元素,根元素可以包含任意个子元素,元素可以包含属性,例如,
<isbn lang="CN">1234567</isbn>
包含一个属性lang="CN"
,且元素必须正确嵌套。如果是空元素,可以用<tag/>
表示。
常见的特殊字符如下:
xml是一种树形结构的文档,他有两种标准的解析API:
- DOM:一次性读取xml,并在内存中表示为树形结构;
- SAX:以流的形式读取xml,使用事件回调。
无论是DOM还是SAX解析xml,使用起来都不直观!
JSON
JSON:JavaScript Object Notation它去除了所有JavaScript执行代码,只保留JavaScript的对象格式。一个典型的JSON如下:
{
"id": 1,
"name": "Java核心技术",
"author": {
"firstName": "Abc",
"lastName": "Xyz"
},
"isbn": "1234567",
"tags": ["Java", "Network"]
}
JSON作为数据传输的格式,有几个显著的优点:
- JSON只允许使用UTF-8编码,不存在编码问题;
- JSON只允许使用双引号作为key,特殊字符用
\
转义,格式简单; - 浏览器内置JSON支持,如果把数据用JSON发送给浏览器,可以用JavaScript直接处理。
因此,JSON适合表示层次结构,因为它格式简单,仅支持以下几种数据类型:
- 键值对:
{"key": value}
- 数组:
[1, 2, 3]
- 字符串:
"abc"
- 数值(整数和浮点数):
12.34
- 布尔值:
true
或false
- 空值:
null
浏览器直接支持使用JavaScript对JSON进行读写:
// JSON string to JavaScript object:
jsObj = JSON.parse(jsonStr);
// JavaScript object to JSON string:
jsonStr = JSON.stringify(jsObj);
所以,开发Web应用的时候,使用JSON作为数据传输,在浏览器端非常方便。因为JSON天生适合JavaScript处理,所以,绝大多数REST API都选择JSON作为数据传输格式。