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。
相关推荐
小鸡吃米…12 小时前
Python - XML 处理
xml·开发语言·python·开源
老歌老听老掉牙18 小时前
Vericut 5轴机床MCH文件解析与构建指南
xml·python·vericut
elangyipi12319 小时前
深入理解前端项目中的 package.json 和 package-lock.json
前端·json
ii_best1 天前
「安卓开发辅助工具按键精灵」xml全分辨率插件jsd插件脚本教程
android·xml·开发语言·编辑器·安卓
总会落叶1 天前
MyBatis XML映射配置与日志系统全解析
xml·tomcat·mybatis
drebander1 天前
macOS 下优雅管理 Maven:多版本切换 + settings.xml 自动切换(zsh-only 实战)
xml·maven
雪域迷影1 天前
Windows11中VS2026使用C++ 现代化json库nlohmann的3种方式
开发语言·c++·json
雪域迷影1 天前
nlohmann::json库对象和json结构体转换的新方式
c++·json·nlohmann_json库
生产队队长1 天前
Web:免费的JSON接口
json
Honmaple1 天前
中国四级城市联动数据,包含港澳台,内含json , sql , python 脚本
python·sql·json