XML & JSON

XML 与 JSON 结构


XML(eXtensible Markup Language)

1. 定义

  • XML 是一种标记语言,用于描述数据的结构和内容。
  • 主要用于数据存储与交换。

2. 特点

  • 可扩展性:用户可以自定义标签。
  • 层次化结构:数据以树形结构组织,父子节点关系明确。
  • 可读性强:通过标签可以清楚了解数据的意义。
  • 跨平台性:与不同系统和语言兼容。

3. 基本结构

  • XML 声明:定义版本和编码方式。

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
  • 根元素:每个 XML 文件有且仅有一个根元素。

    xml 复制代码
    <root>
        <!-- 子元素 -->
    </root>
  • 子元素:嵌套结构表示父子关系。

    xml 复制代码
    <root>
        <child>内容</child>
    </root>
  • 属性:为标签添加额外信息。

    xml 复制代码
    <person name="Alice" age="25"></person>
  • 注释

    xml 复制代码
    <!-- 这是一个注释 -->

4. 优缺点

  • 优点
    • 自描述性强,适合复杂数据。
    • 支持多种数据类型。
    • 有丰富的解析库支持。
  • 缺点
    • 冗余信息多,文件较大。
    • 解析速度相对较慢。

Example

xml 复制代码
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

需要根据xml文件画出结构图如下


JSON(JavaScript Object Notation)

1. 定义

  • JSON 是一种轻量级的数据交换格式。
  • 使用键值对表示数据,适合前后端数据交互。

2. 特点

  • 结构简单:以键值对和数组构成。
  • 体积小:比 XML 更紧凑。
  • 可读性强:易于理解和操作。
  • 语言无关性:与多种语言兼容。

3. 基本结构

  • 对象 (Object):用 {} 表示。

    json 复制代码
    {
        "name": "Alice",
        "age": 25
    }
  • 数组 (Array):用 [] 表示。

    json 复制代码
    [
        "apple",
        "banana",
        "cherry"
    ]
  • 键值对 :使用 key:value 格式,键为字符串。

    json 复制代码
    {
        "key": "value"
    }
  • 嵌套结构:对象和数组可以互相嵌套。

    json 复制代码
    {
        "person": {
            "name": "Alice",
            "hobbies": ["reading", "cycling"]
        }
    }
  • 注释:JSON 不支持注释。

4. 优缺点

  • 优点
    • 数据格式紧凑,解析速度快。
    • 更适合网络传输。
    • 与 JavaScript 的天然兼容性。
  • 缺点
    • 不支持注释,影响可维护性。
    • 表达复杂数据结构时不如 XML 灵活。

Example

json 复制代码
{
  "$schema": "http://json-schema.org/schema#",
  "title": "Product",
  "type": "object",
  "required": ["id", "name", "price"],
  "properties": {
    "id": {
      "type": "number",
      "description": "Product identifier"
    },
    "name": {
      "type": "string",
      "description": "Name of the product"
    },
    "price": {
      "type": "number",
      "minimum": 0
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "stock": {
      "type": "object",
      "properties": {
        "warehouse": {
          "type": "number"
        },
        "retail": {
          "type": "number"
        }
      }
    }
  }
}

XML vs JSON 对比

特性 XML JSON
可读性 标签结构易读,但冗余较多 简洁,格式紧凑
体积 文件较大,数据冗余 文件较小,数据简洁
数据类型 支持多种类型 支持基本类型与数组
层次关系 支持复杂的父子层次关系 支持嵌套,但不如 XML 清晰
解析难度 解析相对复杂 解析简单,解析库丰富
用途 数据存储、配置文件 数据交换、网络传输

总结

  1. XML 适合描述复杂的、具有层次结构的数据,常用于配置文件和文档存储。
  2. JSON 更适合高效的网络传输,是前后端通信的主流格式。
  3. 选择时应根据场景需求权衡:
    • 数据复杂性高、需兼容多系统:XML。
    • 网络传输需求高、轻量级:JSON。
相关推荐
一方~2 小时前
XML语言
xml·java·web
我爱夜来香A8 小时前
SQL进阶:如何把字段中的键值对转为JSON格式?
数据库·sql·json
Mr.小怪12 小时前
Jackson中的ObjectNode与JsonNode详解
json
卓越进步14 小时前
1、mongodb-- BSON 学习和JSON性能对比
学习·mongodb·json
梁云亮2 天前
Jquery ajax 提交序列化或JSON数据到后台
json·jquery·序列化
qq_427506083 天前
npm下载插件无法更新package.json和package-lock.json文件的解决办法
前端·npm·json
农民也会写代码3 天前
php将json数据保存在MySQL中并读取
mysql·json·php
pound1274 天前
第十章.XML
xml·java·前端·javascript
Stay Passion4 天前
Java实用注解篇: @JSONField
java·开发语言·json
南郁4 天前
005-nlohmann/json 基础方法-C++开源库108杰
c++·开源·json